asp.net 确认对话框与数据验证控件的冲突问题

 当一个网页中既有数据验证控件,又有一个按钮在点击时出现提示按钮。

如果直接在页面的后台代码的Page_Load函数中写入btn.Attributes["Onclick"] = "return confirm('确定要保存数据?')",那么验证控件就会失效,因为验证控件也是通过js实现的,这样的话return confirm('确定要保存数据?')先于原来的js代码执行,提前返回了,于是验证控件失去了作用。

Html生成的源码如下:

<input type="submit" name="ctl00$ContentPlaceHolder1$bt_save" value="保存数据" οnclick="return confirm('确定要保存数据吗?');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$ContentPlaceHolder1$bt_save&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="ctl00_ContentPlaceHolder1_bt_save" />

 

一开始我错认为把return去掉就可以了,后来发现这样是不行的,原因是没有return的值,确认框也就没有了作用,不管是确定还是取消,都会执行后台代码。

然后我们重新分析一下,这几段代码的实现。

 

1.我们在后台中加入的Onlick事件的代码默认加到数据验证js方法的前面。

2.我们需要confirm的return值。

3.不能在验证控件的js方法调用前返回。

 

第2,3条已经没有办法改变了,只能在第一条上突破,于是我将Html中生成的验证控件js方法的调用代码也加到后台中,并且放到return confirm()之前,这样就能保证我们的功能了:

后台代码如下:t_save.Attributes["OnClick"] = "WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl00$ContentPlaceHolder1$bt_save', '', true, '', '', false, false));return confirm('保存吗?')" ;

(注意此处必须将html中的&quot都替换为 ‘ );

这样做之后,html生成的代码变成了:

<input type="submit" name="ctl00$ContentPlaceHolder1$bt_save" value="保存数据" οnclick="WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl00$ContentPlaceHolder1$bt_save', '', true, '', '', false, false));return confirm('保存吗?');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$ContentPlaceHolder1$bt_save&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="ctl00_ContentPlaceHolder1_bt_save" />

显然验证控件js方法调用了两次,但在第二次之前我们就已经return 了,所以没关系;

 

以上是我在很无奈的时候想到的办法,如果有哪位高人还有其他好的解决方案,希望多多指教

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值