2

我提交的是空表单,其中一个字段无效。比我更改表单中的某些内容(不适用于当前的无效字段)并在代码中为我的无效字段调用验证:

$('.myinvalidfield').valid()

它返回我这个字段是有效的,但不会删除它的验证错误消息。我应该怎么做才能修复它?(我不想手动删除消息和错误类。可以使用设置或 JQuery 吗?)

更新。

我有两个字段,第一个元素不是必需的,只有当第一个为空时才需要第二个。我使用这个规则:

一、必填字段:

    required: function (element) {
        var secondElement = $(selector);
        var value = secondElement.val();
        return value == ""; //if second (not required) field has value, that current element is not required
    },

二、非必填字段:

    required: function (element) {
        var secondElement = $(selector);
        if (secondElement.length == 0) return false; //becouse my forms builds dynamicly
        secondElement.valid(); //invoke validation for required field
        return false;
    }

此规则有效,但如果我提交带有空字段的表单,它会向我显示所需字段的一个错误,并且当我首先更改非必填字段时,所有表单都是有效的,但错误消息不会从第二个元素中消失。

4

1 回答 1

1

默认情况下,当字段变为有效时,所有错误都会自动清除。

演示:http: //jsfiddle.net/d55hj/


编辑

根据 OP:

“我有两个字段,第一个元素不是必需的,只有当第一个为空时才需要第二个。”

试试这个简化版...

$(document).ready(function () {

    $('#myform').validate({ // initialize the plugin
        rules: {
            field2: {
                required: function () {
                    return $('#field1').is(':blank');
                }
            }
        }
    });

});

HTML

<form id="myform">
    <input type="text" name="field1" id="field1" />
    <input type="text" name="field2" id="field2" />
    <input type="submit" />
</form>

演示:http: //jsfiddle.net/d55hj/4/


否则,您将不得不创建一个自定义方法来更精确地控制一切......

$(document).ready(function () {

    jQuery.validator.addMethod('customrule', function (value, element) {
        if ($('#field1').val() === "" && $('#field2').val() === "") {
            return false;
        } else {
            $('label.error').hide();
            return true;
        }
    }, "Please fill out field #2 when field #1 is empty");


    $('#myform').validate({ // initialize the plugin
        groups: {  // use 'groups' option to combine both error messages into one
            name: "field1 field2"
        },
        rules: {
            field1: {
                customrule: true
            },
            field2: {
                customrule: true
            }
        }
    });

});

工作演示:http: //jsfiddle.net/d55hj/7/

于 2013-03-04T17:41:14.107 回答