您的位置:首页 > Web前端 > JavaScript

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

2004-07-21 10:04 399 查看
一个页面,有一个文本框和一个提交按钮,同时有一个验证控件来验证文本框中的输入,单击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;
 }
 }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息