博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用jQuery的validation后,无法引发asp.net按钮的事件处理程序
阅读量:6546 次
发布时间:2019-06-24

本文共 2583 字,大约阅读时间需要 8 分钟。

使用JQuery进行表单验证,aspx部分代码如下:

ContractedBlock.gif
ExpandedBlockStart.gif
Code
<form id="InfoTableFrom" runat="server">
    
<div>
        
<table width="100%">
            
<tr>
                
<td>
<!--此部分程序生成-->
<div id="InfoTableDiv">
<div id="InfoTableHead">市场调研表</div>
<div id="InfoTableDescript">市场调查</div>
<div id="InfoTableRow">
<div id="InfoTableTitleCol">对应市场</div>
<div id="InfoTableCtrlCol"><input name="a_Varchar_changc" type="text" id="a_Varchar_changc" maxlength="50" /><font color="red"><b>*</b></font></div>
</div>
<div id="InfoTableRow">
<div id="InfoTableTitleCol">所在地区</div>
<div id="InfoTableCtrlCol"><input name="a_Varchar_diqu" type="text" id="a_Varchar_diqu" maxlength="50" /></div>
</div>
<div id="InfoTableRow">
<div id="InfoTableTitleCol">全年销量</div>
<div id="InfoTableCtrlCol"><input name="a_int_xiaoliang" type="text" id="a_int_xiaoliang" style="width:50px;" /></div>
</div>
<div id="InfoTableRow">
<div id="InfoTableTitleCol">市场份额</div>
<div id="InfoTableCtrlCol"><input name="a_float_fe" type="text" id="a_float_fe" style="width:50px;" /></div>
</div>
<div id="InfoTableRow">
<div id="InfoTableTitleCol">当前等级</div>
</div>
<div id="InfoTableRow">
<div id="InfoTableTitleCol">22</div>
<div id="InfoTableCtrlCol"><input name="a_Varchar_222" type="text" id="a_Varchar_222" maxlength="50" style="width:22px;" />
<div class="lblDescript">222</div></div>
</div>
</div>
<script type="text/javascript">
$(
function(){
$.validator.setDefaults({
   submitHandler: 
function(form) { form.submit(); }
});
jQuery.validator.addMethod(
"isInt"function(value, element) { 
     
return this.optional(element) || /^\d*$/.test(value); 
}, 
" 数据类型不正确,只能填写整数");
jQuery.validator.addMethod(
"isFloat"function(value, element) { 
     
return this.optional(element) || /^\d+\.\d{0,7}$/.test(value); 
}, 
" 数据类型不正确,必须填写小数格式如:1.0");
$(InfoTableFrom).validate({
rules:{
   
"a_Varchar_changc" : { required: true}
,   
"a_int_xiaoliang" : {isInt : true}
,   
"a_float_fe" : {isFloat : true}
},
messages:{
    
"a_Varchar_changc" : { required: " 请填写市场"}
}
});
});
</script>
<!--程序生成代码结束-->
                
</td>
            
</tr>
            
<tr>
                
<td align="center">
                
<asp:Button ID="btnOK" runat="server" onclick="btnOK_Click" Text=" 确定 " />
                
&nbsp;&nbsp;
                    
<input id="Button1" type="button" onclick="javascript:self.close()" value=" 关闭 " /></td>
            
</tr>
        
</table>
    
</div>
    
</form>

以上代码运行后,当我们点击“确定”按钮,页面发生PostBack,但是并没有引发“确定”按钮的事件处理程序。我去掉上面的JQuery的代码,事件就可以引发。

经过分析得出原因:
JQuery的Form Validate plugin,在实际提交时并不提交Input type为button的值,所以asp.net无法定位事件处理程序。

解决办法很简单,就是在Form里再放一个hidden input

<input type="hidden" name="btnOK" value=" 确定 " />
注意这个name一定要跟要引发事件的按钮的最终客户端name相同。
再点“确定”程序可以按预期的正常运行。

 

转载于:https://www.cnblogs.com/baoposhou/archive/2008/12/11/1352575.html

你可能感兴趣的文章
集合set-深入学习
查看>>
C#语言学习——面向对象的几大原则
查看>>
zk 常用资料整理(转)
查看>>
JavaScript 字符串操作
查看>>
Android中asset文件夹和raw文件夹区别
查看>>
Fuel 30 分钟快速安装openstack 分类: 软件插件学习 ...
查看>>
第二章家庭作业 2.78
查看>>
Android 下拉刷新上拉载入 多种应用场景 超级大放送(上)
查看>>
Risc-V指令集
查看>>
Python进阶04 函数的参数对应
查看>>
C语言结构体的“继承”
查看>>
WebView之禁止调用第三方浏览器
查看>>
POJ 3468 A Simple Problem with Integers(线段树 区间更新)
查看>>
安装apr-1.6.3报错[cannot remove `libtoolT’: No such file or directory]解决方法
查看>>
C# 操作Excel,控制格式[转]
查看>>
iOS开发中一些常用的属性
查看>>
Git 使用教程
查看>>
spring--基于ioc的配置文件方式
查看>>
“小 U”- UI自动化测试平台 [自动化测试平台开发实战 - 基于 Spring Boot + Kotlin]...
查看>>
easyui的一些使用方法
查看>>