JQuery-Validation – 对选定的ID使用规则方法,为什么name属性必须出现在元素上?

我对JQueryvalidation插件行为有点困惑。

如果我有以下JQuery:

$('#form1').validate({ /* other validation */ }); $('#txt1').rules("add", { required: true, messages: { required: 'This is required!' } }); 

和以下文本输入,具有id但没有name属性:

  

文本框中不会弹出所需的消息。

但是,如果我添加名称属性:

  

它validation它很好。

这是为什么? 由于我在ID选择器上使用规则(“添加”,规则)方法 ,为什么它需要name属性才能将规则与元素相关联? 感谢您的任何见解!

元素首先需要name属性,因为这是jQuery validate在内部用作每个字段的键的内容,其次是因为input元素需要name属性以确保页面validation指定的DOCTYPE。

如果你想使用id应用规则,那么使用这样的,

 $(function () { var $field = $("#id_field").attr("name"); var $params = {debug:false, rules:{}, messages:{}}; $params['rules'][$field] = {"required": true, "rule": ["params"]}; $params['messages'][$field] = "error message"; $("#frm").validate($params); });