jquery验证字段equalTo元素仅当另一个字段具有特定值时

时间:2013-08-17 20:00:56

标签: jquery jquery-validate

使用jquery validate plugin我使用规则equalTo来验证字段如下:

$('#booking').validate({

ignoreTitle: true, 
rules: {
    payments: {
        equalTo: {
            param: "#sales",
            depends: function(element) { return $("#status").val() == 'invoiced'; }
        }
    },

}
});

我可以让这个工作,但现在我只希望这个规则适用于只有选择选项是特定值。我迷失了,不知道如何使equalTo规则可选取决于另一个字段值

我看到依赖规则,但无法找到关于此

的任何文档

有人可以给我一些指示吗?

我已经创建了一个jsfiddle帮助:

http://jsfiddle.net/longestdrive/SneAF/2/

由于

更新:我已经尝试了依赖但未按预期工作:

还发现了一些相似/重复的问题: jQuery Validation - require field only if another field is filledjQuery validation depends

1 个答案:

答案 0 :(得分:3)

您的depends规则中存在一些错误:

  1. 您需要使用其他选择器来获取当前选择的选项:
    $("#status option:selected")
  2. 您的相关选项的值为Invoiced,而不是invoiced
  3. 这是最终结果(正如RobM所提到的,您甚至可以指定更准确的错误消息:

    <强> Fiddle

    $('#booking').validate({
        ignoreTitle: true, 
        rules: {
            payments: {
                equalTo: {
                    param: '#sales',
                    depends: function(element) { 
                        return $("#status option:selected").val() == 'invoiced'; 
                    }
                }
            }
        },
        messages: {
            payments: {
                equalTo: "Payments must equal Sales when Status is 'Invoiced'."
            }
        }
    
    });