jQuery验证两个字段(复选框和文本字段)

时间:2015-03-16 02:39:10

标签: jquery jquery-validate

我有2个字段

<input type="text" name="num_gals" placeholder="Num of Gallons">
<input type="checkbox" value="TRUE"  name="full_tank">Full Tank?

我正在使用jquery-validation来强制执行以下规则。 输入字段“num_gals”应具有非零值,或者应选中“full_tank”复选框。

我尝试了以下但是似乎没有用。

rules:
{
    num_gals:   
    {
        required: function() 
        {
            if ($('.full_tank').val(':checked')) {
                return false;
            } else {
                return true;
            }
        }
    },
    full_tank:
    {
        required: function() 
        {
            if ($('.num_gals').val() == '') {
                return true;
            } else {
                return false;
            }
        }
    }
},

messages:
{
    num_gals:
    {
        required: 'Provide Num Gals or Check Full Tank'
    },
    full_tank:
    {
        required: 'Provide Num Gals or Check Full Tank'
    }
}

非常感谢帮助!

2 个答案:

答案 0 :(得分:1)

您有以下错误......

  1. $('.full_tank')正在寻找名为class full_tank ,在这种情况下,没有此类class。您需要使用name选择 $('input[name="full_tank"]') 属性。为您的其他选择器执行相同的操作。

  2. .val(':checked')正在寻找:checked,而且没有这样的事情。要确定是否 IS ,请使用jQuery .is()

  3. .val() == ''工作正常,但可以替换为.is(':blank'),由于插件的自定义:blank选择器,它也会与填充空白字符的字段匹配。

  4. 请查看:jQuery Selector ReferencejQuery Validate Selector Reference


    由于条件函数只是根据布尔值的结果返回一个布尔值,你可以通过在条件前放一个return来缩短它。

    rules: {
        num_gals: {
            required: function() {
                return ! ($('input[name="full_tank"]').is(':checked'));
            }
        },
        full_tank: {
            required: function() {
                return ($('input[name="num_gals"]').is(':blank'));
            }
        }
    },
    

    BTW:您的代码是JavaScript,因此it's best to avoid Allman code style, typically used with PHP, because JavaScript automatically inserts semicolons

    DEMO:http://jsfiddle.net/r4arpshm/

答案 1 :(得分:0)

只需替换此行

if ($('.full_tank').is(':checked')) {