Button 控件的 OnClientClick 和 OnClick 事件执行顺序问题
<head runat= "server ">
<title> 无标题页 </title>
<script language= "javascript ">
function check()
{
var email = document.getElementById( 'TextBox1 ');
var pwd = document.getElementById( 'TextBox2 ');
if (email.value== " " || pwd.value== " ")
{
alert( "请填写完整内容 ");
return false;
}
else
{
var mailStr = /((\w)+)@((\w)+).[cc|com|net|org|tv|cn]/ig;
if (!mailStr.exec(email.value))
{
alert( 'Email地址书写不正确!\n请您重新输入! ');
email.value = ' ';
email.focus();
return false;
}
}
}
</script>
</head>
<body>
<form id= "form1 " runat= "server ">
<div>
<asp:TextBox ID= "TextBox1 " runat= "server "> </asp:TextBox>
<asp:TextBox ID= "TextBox2 " runat= "server "> </asp:TextBox>
<asp:Button ID= "Button1 " runat= "server " Text= "Button " OnClientClick= "check() " OnClick= "Button1_Click1 " /> </div>
</form>
</body>
上面这段是ASPX文件主体,页面上有两个TextBox 和一个Button ,Button 有两个事件,一个客户端事件,一个写在后配代码CS文件中,如下
protected void Button1_Click1(object sender, EventArgs e)
{
Response.Write( "OK ");
}
执行时,当我按下按纽,好像是OnClientClick 事件先执行验证,难过验证后执行OnClick事件输出OK,但如果没有难过验证,会弹出提示框,点提示框的确定后也会输出OK,这就不是我想要的了,如何在验证不通过的时候就不再执行OnClick?
[解决办法]
当然先执行客户端的javascript函数,页面回送以后再执行服务器端的方法
OnClientClick= "check() "
改成
OnClientClick= "return check() "
[解决办法]
Page_Load里写:
Button1.Attributes.Add( "OnClick ", "return check() ");
[解决办法]
<asp:Button ID= "Button1 " runat= "server " Text= "Button " OnClientClick= "if(!check()) return false; " OnClick= "Button1_Click1 " /> </