2010-09-16 68 views
2

我有一个常规的asp:按钮。我正在.net 3.5中工作。我已经尝试使用OnClientClick属性向按钮添加js确认以及添加代码隐藏,结果是相同的。无论用户点击确认弹出式窗体都不会提交?javascript确认asp.net按钮从不提交?

BtnDeleteSelected.Attributes.Add(“onclick”,“return confirm('确定要删除吗?');”);

确认对话框出现,如果我选择“确定”它仍然不提交..任何想法?谢谢。

回答

5

那是因为你不应该在所有情况下返回。如果您查看网页的源代码,并查找按钮标记,你可能会看到这个...

onclick="return confirm('Ok?'); __doPostback();" 

的__doPostBack调用由在某些情况下,ASP.NET框架自动插入。既然您立即返回,无论confirm的结果如何,回发都不会触发。最终的解决方案是不设置onclick属性,而是使用unobtrusive approach。但是,如果有紧迫的理由来控制这种对通过的onclick服务器端,您可以使用一个简单if声明,只有当他们按“取消”返回......

string js = "if(!confirm('Are you sure you want to delete?')) return false;"; 
BtnDeleteSelected.Attributes.Add("onclick", js); 
+0

非常感谢!非常有意义。唯一迫切的需要可能是混杂着懒惰的坏习惯..我应该克服的事情我知道!再次感谢。 – rodrick 2010-09-16 20:47:54

0

如果验证通过,您是否必须返回TRUE?意思是,如果confirm()返回false,我认为表单不会提交。

+0

从我的理解上面是所有需要的..点击确定返回true – rodrick 2010-09-16 20:35:07

0

您的代码在表面上看起来不错。你有没有可能阻止它被提交的验证器?尝试添加BtnDeleteSelected.CausesValidation = false以防止删除按钮调用任何客户端验证器。

+0

我已经添加BtnDeleteSelected.CausesValidation =错误思考相同的事情..没有骰子..没有其他验证页面上。 – rodrick 2010-09-16 20:35:48

+0

虽然我在那里使用radgrid确认..可能是这个问题..但没有js错误。 – rodrick 2010-09-16 20:36:29

0

请尝试调用doPostBack功能;)

我的意思是:

BtnDeleteSelected.Attributes.Add("onclick", "CheckConfirm();"); 

<script language="javascript"> 
function CheckConfirm() 
{ 
    if (confirm('Are you sure you want to delete?')) 
     __doPostBack('BtnDeleteSelected',''); 
    else 
     return false; 

    return true; 
} 
</script> 

希望帮助,

2

我有这个问题了。我用添加客户端的JavaScript在这样的OnItemCreated代码一个DataGrid的:

myTableCell = e.Item.Cells(iDeleteColumnNumber) 'Delete Button Column 
myDeleteButton = myTableCell.Controls(1) 

If myDeleteButton.UniqueID = "lbtnDelete" Then 
    myDeleteButton.Attributes.Add("onclick", "if(!confirm('OK to Delete?'))return false;") 
End If 

出于某种原因,没有工作。然后我搬到了JavaScript来的<asp:linkbutton>在这样的设计视图:

<asp:LinkButton id="lbtnDelete" runat="server" CssClass="link-text" Text="<img border=0 src=../images/icons/icon-delete.gif alt=Delete>" 
CommandName="Delete" CausesValidation="false" OnClientClick="if(!confirm('OK to Delete?'))return false;"></asp:LinkButton> 

这为我工作。