验证控件和javascript冲突的解决办法

一个页面,有一个文本框和一个提交按钮,同时有一个验证控件来验证文本框中的输入,单击BUTTON时同时要触发一个javascript脚本。

在PageLoad中加入:Button1.Attribute.Add("onclick","return CheckOther()");

运行时提示发生脚本错误,缺少";"

生成的HTML:<input type="submit" name="btCheck" value=" 注 册 " onclick="return CheckAgree()if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="btCheck" />
可以发现:CheckAgree()后的确是缺少了";"

改为:Button1.Attribute.Add("onclick","return CheckOther();");

运行时不提示脚本错误,但验证控件不起作用了。

生成的HTML:<input type="submit" name="btCheck" value=" 注 册 " onclick="return CheckAgree();if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="btCheck" />
可以发现:onclick时调用完CheckAgree()函数直接就返回了,根本就没有调用验证脚本。

改为:Button1.Attribute.Add("onclick","if(Page_ClientValidate()) return CheckAgree();");

运行时不提示脚本错误,并且验证控件也起作用了,但是页面验证了两次

生成的HTML:<input type="submit" name="btCheck" value=" 注 册 " onclick="if(Page_ClientValidate()) return CheckAgree();if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="btCheck" />
可以发现:在调用Checkgree()函数前先验证了一次页面,但如果页面没有通过验证,就会执行下面的if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();又执行了一次验证。

改为:Button1.Attribute.Add("onclick","if(Page_ClientValidate()) {eturn CheckAgree();}else{return false;}");

问题解决

生成的HTML:<input type="submit" name="btCheck" value=" 注 册 " onclick="if(Page_ClientValidate()){return CheckAgree();}else{return false;}if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="btCheck" />
不过可以看到if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); 是垃圾代码,根本就不会执行

把Button1的CausesValidation设置为false,生成的HTML:
<input type="submit" name="btCheck" value=" 注 册 " id="btCheck" onclick="if(Page_ClientValidate()){return CheckAgree();}else{return false;}" />
可以看到,没有垃圾代码了。

但是我想先执行CheckAgree(),如果返回true再验证页面,就可以这样写:

Button1.Attribute.Add("onclick","return CheckAgree()");

function CheckAgree()
{
 if(!document.all["checkbox"].checked)
 {
 alert("如果继续注册,必须先同意协议!");
 return false;
 }
 else
 {
 if(Page_ClientValidate())
 {
 return true;
 }
 else
 {
 return false;
 }
 }
}

你可能感兴趣的:(JavaScript)