1

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

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

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

jQuery 说disabled字段被忽略。我什至尝试过: jquery.validate 验证禁用字段

ignore: ":hidden"

我错过了什么?

4

3 回答 3

3

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

<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 所说,您需要尝试摆脱此错误消息,因为它令人困惑,即使表单有效,错误消息仍然存在

于 2013-01-18T13:11:22.557 回答
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 演示。

于 2013-01-18T00:13:28.580 回答
0

在验证阶段忽略禁用的字段但是如果验证阶段在字段被禁用之前开始起作用,则错误消息仍然存在。

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

于 2013-01-17T13:18:33.347 回答