2

JQuery検証プラグインの動作について少し混乱しています。

次の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"/>

それはそれをうまく検証します。

何故ですか?IDセレクターでrules( "add"、rules)メソッドを使用しているのに、ルールを要素に関連付けるためにname属性が必要なのはなぜですか?洞察をありがとう!

4

2 に答える 2

9

name最初にjQueryvalidateが各フィールドのキーとして内部的に使用するため、要素に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 に答える