以下这段代码经过实际测试可以很好的工作,主要是用来验证yearText 输入的范围是2000 到 2012,我的问题是:messages:{
<%=yearText.UniqueID %>:"Please enter a year from 2010 to 2012" 中,message :{}里 为什么需要 <%=dayText.UniqueID %>?实际上我用别的input 控件的id也可以实现一样的效果。比如: <%=dayText.UniqueID %>:"Please enter a year from 2010 to 2012"
谢谢大家的解答。
$(document).ready(function()
{
$('form').validate({
errorLabelContainer:'#<%=errorDiv.ClientID %>',
wrapper:'li',
rules:{
<%=yearText.UniqueID %>:{
required:true,
range:[2000,2012]
}
},
messages:{
<%=yearText.UniqueID %>:"Please enter a year from 2010 to 2012"
}
});
});
errorLabelContainer 也是html 控件,我的Query 中所涉及的所有控件都是html 控件。
<div style="width: 440px; text-align: center; color: Red; margin: 5px" id="errorDiv"
runat="server">
</div>
<input class="inputText" type="text" id="yearText" runat="server" />
<input class="inputText" type="text" id="dayText" runat="server" />
jQuery.validate 规则和messages的key都用的是表单元素的name, 在asp.net中,客户端生成的name不一定会是服务器端的id~
比如说你用了母版页,用户控件之类的,或者是一些数据控件,看下运行后的html源代码,生成的name可能就会是MasterPage1$yearText之类的
<%=yearText.UniqueID %> 产生的确实是name 属性。
我的问题是:在
messages:{
<%=yearText.UniqueID %>:"Please enter a year from 2010 to 2012"
}
里, 我无论传入的是<%=dayText .UniqueID %> 还是 <%=yearText.UniqueID %> 效果都一样。
如果这样的话,Messgae 里第一个参数 <%=yearText.UniqueID %> 还有什么意义?
但如果不用第一个参数,验证会无效,会直接提交到服务器端。
以下两种写法,效果一样:
messages:{
<%=yearText.UniqueID %>:"Please enter a year from 2010 to 2012"
}
messages:{
<%=dayText.UniqueID %>:"Please enter a year from 2010 to 2012"
}
以下的写法,验证规则不成立,直接提交到服务器端了。
messages:{
"Please enter a year from 2010 to 2012"
}
@tyrbl:在messages里面用<%=dayText.UniqueID %>也提示"Please enter a year from 2010 to 2012"?没可能吧……
另外messages:{"xxx"}这样肯定报错了,没有key
要不然试试:
messages: {
<%=yearText.UniqueID %>: { range: "Please enter a year from 2010 to 2012" }
}
或者你下载最新版本的看看:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
@囧月: 我测试过了,这个jquery 代码可以正常运行的。
我只是不清楚message的具体用法,为什么传入 <%=yearText.UniqueID %> 或者 <%=dayText.UniqueID %> 都可以,但明明是为yearText做验证的
@tyrbl: 这样灵异的事情我也不清楚了~
messages用法跟rules可以说是一样的
同上,我想补充的是事实上JQUERY在很多时候兼容性是有问题的,本人强烈建议您使用JS。虽然JQUERY在UI插件方面做得很好也很方便,但是您需要谨记JS才是基础,JQUERY也仅仅是JS库而已。
jquery 产生的目的就是为了解决游览器兼容性的问题,为何你说的jquery 很多时候兼容性有问题呢