jQuery Validate插件正在验证已被“禁用”的字段

时间:2013-01-17 13:13:00

标签: jquery jquery-validate

我有一个字段gender?,如果性别设置为FEMALE则启用is Pregnant?

然后如果is Pregnant?字段未得到答复,则标记为无效。

如果您返回并将gender?设置为MALE验证仍将is Pregnant?标记为无效,即使它已disabled

jQuery说disabled字段被忽略了。我甚至尝试过: jquery.validate validating disabled field

ignore: ":hidden"

我错过了什么?

3 个答案:

答案 0 :(得分:2)

.validate() ignore:选项的工作方式如下:

  

忽略,默认:":hidden"
  验证时要忽略的元素,只需将其过滤掉即可。 jQuery的not-method是   使用,因此 not()接受的所有内容都可以作为此选项传递

http://docs.jquery.com/Plugins/Validation/validate#toptions

工作演示: http://jsfiddle.net/us9aE/

<强> HTML:

<form id="myform">   
     <input type="text" name="field" disabled="disabled" /> <br/> 
</form> 

<强> jQuery的:

$(document).ready(function() {
    $('#myform').validate({
        ignore: ":disabled"
    });
});

如果您需要更具体的帮助,请展示您的相关HTML,您的jQuery,并可选择创建一个jsFiddle演示。

答案 1 :(得分:2)

这是一个有效的问题,有了这个标记

<form>
<div>
    Male:
    <input type="radio" name="gender" value="male" />
    Female:
    <input type="radio" name="gender" value="female" /></div>
<br />
<div>
    Pregnant:
    <input type="radio" name="pregnant" value="yes" />
    Not Pregnant:
    <input type="radio" name="pregnant" value="no" /></div>
<br />
<input type="submit" />
</form>

和这个脚本

$('[name=gender]').click(function () {
    var disabled = $(this).val() === 'male';
    $('[name=pregnant]').attr('disabled', disabled);

    // UNCOMMENT THIS TO FIX 
    // if ($('[name=pregnant]').hasClass('error')) {
    //    $('form').validate().form();
    // }
});

$('input').addClass('required');

$('form').validate({
    ignore: ":disabled",
    errorPlacement: function (error, element) {
        error.appendTo(element.parent("div"));
    },
    submitHandler: function () {
        alert('form is ok');
    }
});

重现问题:

  • 点击女性
  • 点击提交
  • 错误消息显示 - 这是正确的
  • 点击男性 - 错误消息仍然显示
  • 点击提交 - 表单有效

所以@ioan说你需要尝试摆脱这个错误信息,因为它很混乱,即使表单有效,错误信息仍然存在

答案 2 :(得分:0)

在验证阶段忽略禁用的字段但是如果验证阶段在禁用字段之前生效,则错误消息仍然存在。

您可以尝试通过清除验证错误并重新验证表单来删除验证消息。