使用jQuery Validation Plugin 1.11.1动态添加/删除带有数据属性的表单验证

时间:2015-06-10 04:32:54

标签: javascript jquery jquery-validate

我正在使用jQuery Validation Plugin来处理表单验证,它也使用像

这样的数据属性
$('#validate-me-plz').validate();

$("#country").change(function(){
    if($(this).val() === "country1") {
        if($('.firstName').attr('data-rule-required') !== 'true') {
            $('.firstName').attr('data-rule-required','true');    
        }
    } else if($(this).val() === "country2") {
        if($('.firstName').attr('data-rule-required') !== 'false') {
            $('.firstName').attr('data-rule-required','false');    
        }
    }
});

JSFiddle - http://jsfiddle.net/ylokesh/SLXhR/135/

正常情景: 如果我没有点击提交按钮并更改下拉值并点击提交按钮,那么效果很好。

有问题的情景: 只要我点击提交按钮,然后尝试更改下拉值。它不会禁用/启用所需的验证。

重现实际问题的步骤

  • 点击表单提交按钮以触发所需的字段验证
  • 输入字段将显示错误消息
  • 现在更改国家/地区下拉列表值以使输入字段不必要
  • 此时错误消息应该消失,但情况并非如此

的JavaScript

{{1}}

请指导我获取此问题的解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用data代替attr而不是设置字符串truefalse设置bool

<强> DEMO

$("#country").on('change',function(){
    if($(this).val() === "country1") {
        if(!$('.firstName').data('rule-required')) { //check bool value
            $('.firstName').data('rule-required',true);    //set bool value
        }
    } else if($(this).val() === "country2") {
        if($('.firstName').data('rule-required')) {
            $('.firstName').data('rule-required',false);    
        }
    }
});