2

我对JQuery 验证插件的行为有点困惑。

如果我有以下 JQuery:

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

$('#txt1').rules("add",
{
    required: true,
    messages: { required: 'This is required!' }
});

以及以下文本输入,带有 id 但没有 name 属性:

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

文本框中不会弹出任何必需的消息。

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

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

它验证它就好了。

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

4

2 回答 2

9

元素上需要一个name属性,首先是因为 jQuery validate 在内部使用它作为每个字段的键,其次是因为元素name上需要该属性input以确保页面验证为指定的 DOCTYPE。

于 2013-01-03T18:55:29.967 回答
3

如果您想使用 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);
});
于 2014-05-02T09:16:42.670 回答