首页 新闻 会员 周边 捐助

JQUERY 验证中message 用法请教

0
悬赏园豆:20 [已解决问题] 解决于 2012-03-16 08:28

以下这段代码经过实际测试可以很好的工作,主要是用来验证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" />

tyrbl的主页 tyrbl | 初学一级 | 园豆:34
提问于:2012-02-20 19:04
< >
分享
最佳答案
1

jQuery.validate 规则和messages的key都用的是表单元素的name, 在asp.net中,客户端生成的name不一定会是服务器端的id~

比如说你用了母版页,用户控件之类的,或者是一些数据控件,看下运行后的html源代码,生成的name可能就会是MasterPage1$yearText之类的

收获园豆:20
_A_A | 小虾三级 |园豆:1139 | 2012-02-20 20:33

  <%=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 | 园豆:34 (初学一级) | 2012-02-21 10:17

@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/

_A_A | 园豆:1139 (小虾三级) | 2012-02-21 18:14

@囧月: 我测试过了,这个jquery 代码可以正常运行的。

我只是不清楚message的具体用法,为什么传入 <%=yearText.UniqueID %> 或者   <%=dayText.UniqueID %> 都可以,但明明是为yearText做验证的

tyrbl | 园豆:34 (初学一级) | 2012-02-21 22:34

@tyrbl: 这样灵异的事情我也不清楚了~

messages用法跟rules可以说是一样的

_A_A | 园豆:1139 (小虾三级) | 2012-02-21 23:51
其他回答(1)
0

同上,我想补充的是事实上JQUERY在很多时候兼容性是有问题的,本人强烈建议您使用JS。虽然JQUERY在UI插件方面做得很好也很方便,但是您需要谨记JS才是基础,JQUERY也仅仅是JS库而已。

VampireEarl | 园豆:21 (初学一级) | 2012-02-21 01:56

jquery 产生的目的就是为了解决游览器兼容性的问题,为何你说的jquery 很多时候兼容性有问题呢

支持(0) 反对(0) chenping2008 | 园豆:9836 (大侠五级) | 2012-02-21 09:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册