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

原创 2004年07月21日 10:04:00

一个页面,有一个文本框和一个提交按钮,同时有一个验证控件来验证文本框中的输入,单击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;
 }
 }
}

解决同一页面jQuery多个版本或和其他js库冲突方法

1.同一页面jQuery多个版本或冲突解决方法  代码如下 复制代码         jQuery测试页-111cn.net        ...
  • u011798964
  • u011798964
  • 2016年01月21日 18:51
  • 2251

解决哈希(HASH)冲突的主要方法

http://blog.sina.com.cn/s/blog_54f82cc20100zuuy.html 虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈...
  • lightty
  • lightty
  • 2013年09月06日 09:18
  • 37086

解决Hash冲突的几种方法

开放地址法: 1.线性探测法        线性再散列法是形式最简单的处理冲突的方法。插入元素时,如果发生冲突,算法会简单的从该槽位置向后循环遍历hash表,直到找到表中的下一个空槽,并将该元...
  • u012104435
  • u012104435
  • 2015年08月24日 15:07
  • 16516

android中控件公用产生的冲突的解决办法

控件组合产生冲突的解决办法!!!
  • hongbingfans
  • hongbingfans
  • 2013年09月22日 17:27
  • 2409

下拉刷新和图片轮播控件事件冲突之解决办法(达到和淘宝京东同样的效果)

下拉刷新和图片轮播控件事件冲突之解决办法最近想在项目中同时使用这两种控件:1、android-Ultra-Pull-To-Refresh(下拉刷新) 项目地址:https://github.com/...
  • drg1612
  • drg1612
  • 2015年11月11日 14:46
  • 5742

pdksh-5.2.14安装冲突解决办法并能成功的rpm

  • 2014年10月23日 23:43
  • 193KB
  • 下载

Gallery与其Item的Click事件冲突的解决办法

  • 2012年10月17日 14:32
  • 499B
  • 下载

SVN冲突解决办法.

  • 2010年07月13日 18:40
  • 1KB
  • 下载

oracle和JBoss、Tomcat等默认端口冲突的解决办法(网上抄来的备用,还未实践)

  • 2010年01月18日 07:52
  • 12KB
  • 下载

vc和offic2007冲突解决办法

  • 2010年11月12日 00:05
  • 19KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:验证控件和javascript冲突的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)