使用jquery验证插件验证Jquery自动完成字段

时间:2014-04-17 05:29:00

标签: javascript jquery autocomplete jquery-validate

我对jquery不太满意,因此需要你的帮助。

我有一个表单,其中有两个字段“origin”和“destination”。所以我在两个字段中使用jquery自动完成。

$('#form1_origin,#form1_destination').autocomplete({
        lookup: countriesArray,
        minChars: 0,
    });

它工作得很好但是当我尝试使用jquery验证插件验证这些字段时,我遇到了一些问题。

以下是代码: -

$('#form_1').validate({
    errorClass: "airError",
    focusInvalid: true,
    success: function(element){
        $(element).closest('.airError').removeClass('.airError');
    },
    errorPlacement: function(error,element){
        if(element.attr("name") === "form1_infant" || element.attr("name") === "form1_departure"){
            error.insertAfter('#showErrors');
        }else{
            error.insertAfter(element);
        }
    },
    rules: {
    form1_origin: {
        validSelectionOrigin: true,
    },
    form1_destination:{
        validSelectionDestination: true,
        compare_origin_dest: true
    },
    // rules for  rest of the fields
    },
});

问题: -

我非常确定jquery会验证 onkeyup 上的字段。因此,如果我 TYPE 此字段中的值,它可以正常工作,但是当我从自动完成列表中选择值时,它不会验证该字段,因为我仍然可以看到显示的错误。那么我能做些什么来使它适用于两者?

1 个答案:

答案 0 :(得分:5)

引用OP:

  

"我非常确定jquery会验证onkeyup上的字段。因此,如果我在此字段中输入值,它可以正常工作,但是当我从自动完成列表中选择值时,它不会验证该字段,因为我仍然可以看到显示的错误。那么我能做些什么来使它适用于两者?"

jQuery Validate插件通过多个触发器评估文本input元素...按键,模糊和提交按钮单击(所有字段一次)。

jQuery Validate插件还为您提供了.valid()方法,您可以在其中以编程方式触发验证。

我认为您没有显示足够的相关代码,但基本上,只要字段值发生变化,您就需要触发.valid()

根据需要调整代码......

$('input[name="autocompletedField]').on('change', function() {
    $(this).valid();  // trigger validation test
});