Jquery验证需要触发两次

时间:2013-10-16 21:41:38

标签: jquery html validation

我们有一个验证器,用于检查输入并选择如下所示加载:

$('form')
   .on('keyup', 'input[required], input.optional, select.required', validator.checkField)
   .on('change', 'select.required', validator.checkField);

表单是一个多部分表单,因此有一个下一个按钮,只有在当前显示中的所有字段(称为字段集)都经过验证时才能启用。

一旦输入被验证,它就会为div添加一个“好”类。这是有效的,并且在输入的任何键盘上或对有效的选择进行更改时,优良类将被添加到包含的div中。

正在发生的奇怪事情是,对于所有选择,您必须在功能启用之前更改选择两次,启用下一个按钮可识别所有必需字段已经过验证。

我们认为这是因为当前集合中包含“好”类的div数量的计数器在完成添加到dom之前就会触发。有什么建议吗?

function enabler(input) {
    console.log("number of good classes required: "+input);
    //for testing:
    //alert(input);
    var v = this.value;
    var good;
    good = $("#f"+curFieldSet).find('.good');
    console.log("number of good classes found: "+good.length);
    if (good.length >= parseInt(input)){
         $('.next').prop('disabled', false);
    } else {
         $('.next').prop('disabled', true);
    }
}

enabler(4);

$(document).ready(function(){

    $('input[required]').not('.unused').keyup(function(){
         setTimeout(enabler(fieldSetNumber),500);
    }).change();

    $('select.required').not('.unsed').change(function(){
         setTimeout(enabler(fieldSetNumber),1000);

        if($(this).attr('id')=='account-type'){
            $('.section').hide();
            $('#' + $(this).val()).show(); 
        }
    }).change();

});

0 个答案:

没有答案