更改时所选单选按钮的Addmethod检查值

时间:2012-08-21 08:20:40

标签: jquery-validate radio-button

已编辑,见下文

目前,我有两个单选按钮,每个按钮的值都代表帐户持有人的数量。即:

<INPUT id="ONE_HOLDER" name=NR_OF_HOLDERS value=1 type=radio />
<LABEL for=ONE_HOLDER>One holder</LABEL>
<br />
<INPUT id="TWO_HOLDERS" name=NR_OF_HOLDERS value=2 type=radio />
<LABEL for=TWO_HOLDERS>Two holders</LABEL>

我想在每次选择一个单选按钮时验证,所以我使用Jquery验证器执行以下操作:

//Validations fix for radio and checkbox checks
$('input[type="radio"],input[type="checkbox"]').change(function(){
    $("#YOUR_ACC").validate().element(this);
});

这叫

$('#YOUR_ACC').validate({ ... });

反过来运行我的自定义验证器方法,如下所示:

$.validator.addMethod("numberOfHolders", function(value, element) {
    try {
        nrOfHolders = value;
        alert("The value is " + nrOfHolders);
        if(nrOfHolders == 1)     { return true; }
        else if(nrOfHolders == 2){ return false; }          
    }
    catch(err) {
        return false;
    }
});

它贯穿它和所有,但问题是,当我选择第一个单选按钮,这是需要选择的那个按钮,它保持该值(1)即使我选择了第二个单选按钮。

为什么会这样,我该如何解决?

编辑解决方案

请参阅下面的回答。

1 个答案:

答案 0 :(得分:1)

我的解决方案

中似乎是
addMethod("numberOfHolders", function(value, element) { });

不接受单选按钮的值。 我通过使用element参数获取正确的元素(确保更加动态),然后像在常规 jQuery方法中那样获取已检查单选按钮的值来实现它:

var element_name = $(element).attr('name');
value = $('input:radio[name="'+element_name +'"]:checked').val();