在jquery validate中替换equalS()方法

时间:2012-08-31 05:54:57

标签: jquery validation jquery-validate

我现在正在使用 jQuery Validate Plugin 并遇到一些问题。

我的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>

我正在制作银行卡管理页面。一次可以添加几张卡片。
我想让每张卡分开验证, 但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'
});

我如何达到目的?

2 个答案:

答案 0 :(得分: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

或者如果您只想使用一个插件

你可以遍历所有的卡片div并根据它们的值制定规则

答案 1 :(得分:0)

你可以尝试这个,比如选择器

$("#registerForm").validate({
    rules:{
        name:{
            required:true,
            email:true
        },
        password:{
            required:true,
            minlength:6,
            maxlength:12
        },
        cfmPassword:{

            equalTo:$('#registerForm').find('#password'),
            minlength:6,
            maxlength:12
        }

    },
    errorPlacement: function( error, element ) {
        error.insertAfter( element.parent() );
    }
});