基于元素选择的jQuery验证条件

时间:2015-10-21 16:40:55

标签: javascript jquery jquery-validate

我的表单和验证表单上有以下输入元素和jQuery验证插件。

HTML:

vitualenv

jQuery验证:

<form name='frmUsers' id='frmUsers' method='post' action='#'>
    <div>
        <input type='text' name='name' id='name' placeholder='Name' />
    </div>
    <br />
    <div>
        <input type='text' name='fixed_budget' id='fixed_budget' placeholder='Fixed budget' />
    </div>
    <br />
    <div>
        <select name='budget' id='budget'>
            <option value=''>Select your budget</option>
            <option value='1000'>1000</option>
            <option value='2000'>2000</option>
            <option value='3000'>3000</option>
            <option value='4000'>4000</option>
        </select>
    </div>
    <br/>
    <div>
        <input id='save' type='submit' value='Save' />
    </div>
</form>

现在所有元素都是必填字段,但我在$(document).ready(function () { $("#frmUsers").validate({ onkeyup: false, onfocusout: false, ignore: [], rules: { "name": { required: true }, "fixed_budget": { required: true }, "budget": { required: true } }, messages: { "name": { required: 'required' }, "first_name": { required: 'required' }, "last_name": { required: 'required' } }, errorPlacement: function (error, element) { }, submitHandler: function () { return false; } }); }); 上有特定条件。

例如:

当用户点击提交时,Fixed budget (text box) and budget (select box)fixed budget元素会显示错误,但(1)当用户在budget上选择任意选项时,请将固定预算字段设置为不需要。 (2)当用户在budget设置预算字段中输入某些内容时,不需要。

这是我工作的JSFiddle:http://jsfiddle.net/mananpatel/85KR4/384/

任何想法?

感谢。

1 个答案:

答案 0 :(得分:1)

  

(1)当用户在预算中选择任何选项时,将固定预算字段设置为不需要。 (2)当用户在固定预算集预算字段中输入某些内容时,不需要。

换句话说,您只需要填写这两个字段中的一个。

包括the additional-methods.js file并使用the require_from_group method

rules: {
    name: {
        required: true
    },
    fixed_budget: {
        require_from_group: [1, ".requiredGroup"]
    },
    budget: {
        require_from_group: [1, ".requiredGroup"]
    }
},

DEMO:http://jsfiddle.net/7om97gk8/

注意:

  1. 如果要取消消息,请在return false功能中使用errorPlacement。不要把这个功能留空,因为这是一个草率的编码。

    errorPlacement: function (error, element) {
       return false;
    },
    
  2. 此外,使用最新版本的插件文件,因为这将确保require_from_group方法无错误运行。

  3. 当您完全禁用显示这些消息时,我不明白为什么使用messages选项。在这种情况下,您可以安全地删除messages