Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery验证-对所选ID使用rules方法,为什么元素上必须存在name属性?_Jquery_Jquery Validate_Name Attribute - Fatal编程技术网

JQuery验证-对所选ID使用rules方法,为什么元素上必须存在name属性?

JQuery验证-对所选ID使用rules方法,为什么元素上必须存在name属性?,jquery,jquery-validate,name-attribute,Jquery,Jquery Validate,Name Attribute,我对这种行为有点困惑 如果我有以下JQuery: $('#form1').validate({ /* other validation */ }); $('#txt1').rules("add", { required: true, messages: { required: 'This is required!' } }); 和以下文本输入,具有id但没有名称属性: <input type="text" id="txt1"/> <input ty

我对这种行为有点困惑

如果我有以下JQuery:

$('#form1').validate({
    /* other validation */
});

$('#txt1').rules("add",
{
    required: true,
    messages: { required: 'This is required!' }
});
和以下文本输入,具有id但没有名称属性:

<input type="text" id="txt1"/>
<input type="text" id="txt1" name="anything"/>

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

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

<input type="text" id="txt1"/>
<input type="text" id="txt1" name="anything"/>

它很好地验证了这一点


为什么呢?既然我在ID选择器上使用了,为什么它需要name属性来将规则关联到元素?谢谢你的洞察力

元素首先需要一个
name
属性,因为jQuery validate在内部使用该属性作为每个字段的键,其次,因为
输入
元素上需要
名称
属性,以确保页面验证为指定的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);
});

谢谢你的解释!您可以在此进一步解释一下,这段代码如何允许验证器基于id属性查找元素?OP询问“为什么元素上必须存在name属性?”-因此,您不需要回答实际问题,而是通过编程方式查找
name
属性并将其复制到方法中。完全没有意义-如果您有
名称
,请使用
名称
。否则,您可以使用
.rules()
方法通过
id
分配规则,即使每个字段元素上唯一的
名称仍然是此插件的强制要求。然而,OP想知道他是否可以完全避免使用
name
属性,而这在这个插件中是不可能的。