【问题标题】:function for required field of dynamic validation rule动态验证规则必填字段的函数
【发布时间】:2013-09-13 20:02:12
【问题描述】:

在下面的代码中,必须确定字段是否为必填的函数不起作用。该代码与一个网站相关,其中一些文本字段('person_item')和复选框('chckbox')是动态创建的,然后添加验证规则。如果选中了一组复选框,则必须验证相关的“person_item”文本字段(否则不验证)。

我想我明白为什么'required'的功能不起作用(因为'nr',但我不知道如何编写正确的代码)。(PS:验证规则确实适用于'maxlength ' 和 'float' 验证类型)

for(var nr=0;nr<maxitems;nr++){
    form = getSingleform(nr,type);
    $("#wrapper").append(form);
    $("#person_item"+nr).rules("add", { 
      required: function(element) {return ($('#chckbox'+nr).is(':checked') ); },
      maxlength: 3,
      float:true, 
}); //rules add
}//for

【问题讨论】:

  • 你能显示更多的代码吗?这取决于您如何在包含函数中声明 nr 变量。
  • '#chckbox'+nr 是错字吗?你不会缩短#person_item
  • @Barmar:请参阅上面的更新
  • @Vlad: '#chckbox'+nr 指的是复选框的 id(chckbox0、chckbox1 等...)
  • @user2543182 我明白了..我只是想知道#chckbox 是否应该是#checkbox。奇怪的是,您只缩短了复选框这个词,而在其他任何地方都使用了完整的词。

标签: jquery


【解决方案1】:

你需要使用立即执行函数来关闭nr

for(var nr=0;nr<maxitems;nr++){
    form = getSingleform(nr,type);
    $("#wrapper").append(form);
    $("#person_item"+nr).rules("add", { 
        required: (function(nr) {
            return function(element) {return ($('#chckbox'+nr).is(':checked') ); };
        })(nr),
        maxlength: 3,
        float:true, 
    }); //rules add
}//for

请参阅Why is this function wrapped in parentheses, followed by parentheses? 了解在 Javascript 中立即执行函数的说明。

【讨论】:

  • 行得通,谢谢!我还是一个初学者,你能详细说明一下这个“立即执行功能”吗?
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 2012-05-23
  • 2013-03-23
  • 1970-01-01
相关资源
最近更新 更多