1

現在jQueryValidateプラグインを使用していますが、問題があります。

私のhtml:

<div class="card">
    <div class="item">
        <span class="label"><b class="red">*</b>CardNo:</span>
        <input class="BankCardNo" name="BankCardNo" type="text" value=""/> 
    </div>
    <div class="item">
        <span class="label"><b class="red">*</b>Confirm CardNo:</span>
        <input class="ConfirmCardNo" name="ConfirmCardNo" type="text" value=""/>
    </div>
</div>
<div class="card">
    <div class="item">
        <span class="label"><b class="red">*</b>CardNo:</span>
        <input class="BankCardNo" name="BankCardNo" type="text" value=""/> 
    </div>
    <div class="item">
        <span class="label"><b class="red">*</b>Confirm CardNo:</span>
        <input class="ConfirmCardNo" name="ConfirmCardNo" type="text" value=""/>
    </div>
</div>

BankcardManagePageを作成しています。一度に複数のカードを追加できます。
すべてのカードを個別に検証したいのですが、equalToメソッドは要素id、name、attrのみを受け入れます

そのような

$("#myForm").validate({
  rules: {
    "Password": {
      required: true,
    },

    "ConfirmPassword": {
      required: true
      equalTo: '#Password'
    }
  },

  errorElement: "div"
});

これはプラグインの追加ルールを検証するもので、とても美しいです。
だから私はこのようなすべての検証コードが欲しいだけです。これが主な問題です。

以下のようなコードを書くと、正しいCardNoが見つかりません......

$('.card').find('.ConfirmCardNo').rules('add', {
  required: true,
  equalTo: '.CardNo'
});

どのように私は私の目的を達成しますか?

4

2 に答える 2

0

あなたはこのようにすることができます

var $elems = $('.card');

(function fetch(i) {
    if(i >= $elems.length) return;  // no elems left

    var $elem = $elems.eq(i);

    $($elem).find('.ConfirmCardNo').rules('add',{ 
        required:true, 
        equalTo:$($elem).find('.CardNo')
    });

    fetch(i + 1);  // next one

  })(0);  // start with first elem

または、プラグインを 1 つだけ使用する場合

すべてのカード div をループして、それらの値に基づいてルールを作成できます

于 2012-08-31T06:03:56.813 に答える