将JQuery验证与JQuery Autocomplete结合使用

时间:2015-06-30 11:16:58

标签: javascript jquery autocomplete

我有一个包含三个字段的表单。前两个输入中的一个是必需的(可以是一个也可以是两个),并且总是需要第三个字段。对于前两个,我已将它们添加到一个组来处理它。到目前为止,这是我的代码

var validator = $("#my_form").validate({
    groups: {
        datagroup: "fieldOne fieldTwo"
    },
    rules: {
        fieldOne: {
            require_from_group: [1, '.datagroup'],
            email: true,
            maxlength: {
                param: 40,
                depends: function (element) {
                    var valTwo = $('#fieldTwo').val();
                    return !valTwo || (valTwo.length < 8) || (valTwo.length > 18);
                }
            }
        },
        fieldTwo: {
            require_from_group: [1, '.datagroup'],
            minlength: {
                param: 8,
                depends: function (element) {
                    var valOne = $('#fieldOne').val();
                    return !valOne || (valOne.length > 40);
                }
            },
            maxlength: {
                param: 18,
                depends: function (element) {
                    var valOne = $('#fieldOne').val();
                    return !valOne || (valOne.length > 40);
                }
            }
        },
        fieldThree: {

        }
    }
});

这是我的问题。以上处理前两个输入没有问题。第三个输入是使用JQuery Autocomplete在用户键入时向用户显示列表。我需要确保提交的值在该列表中。我还需要确保提供了一个值。

我不确定是否需要将第三个输入组合到前两个组中?我也不确定如何确保该值在我的列表中。

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

在脚本的开头,制作原始名称列表的隐藏副本:

var values = [];
$('#autocomplete').find('option').each(function(){
    values.push(this.value);
});

避免人们向列表中添加名称,并保留原始名称列表以便在jQuery验证器中检入:

            depends: function (element) {
                var valOne = $('#autocomplete').val();
                return !valOne || (values.indexOf(valOne) < 0);
            }