0

我被困在一个问题上,标志没有正确重置。

我有下面的代码。我正在编写特定于 IE8 的代码。在字段模糊时,它会遍历字段的类,如果任何类验证返回 false,它应该显示 error 和 set flag4=false。然后点击提交按钮,它需要检查所有标志是否为真,如果是,则返回真。

但现在,on blur正在正确地发生。如果任何验证失败,它会显示错误,稍后如果我们将错误更改为正确的格式,它会显示为绿色。但flag4总是回归false。由于它总是返回 false,因此表单永远不会成功提交,并且用户无法移动到下一页。我的问题是,我应该在哪里重置 的值flag4

我尝试了很多选项,但单击按钮失败。一旦flag4=false正确地给出所有字段,它也不会成为真的。

var flag4 = true;
if(navigator.appVersion.indexOf("MSIE 8.0") != -1) {
    var firsttime=false;
    var validators = {
        fn1: function(val) {
            //return true or false;
        },
        fn2: function(val) {
            //return true or false;
        }
    };

    $('#submit_form :input').not('#id1,#id2,#id3').blur(function() {
        var input = $(this);
        var returnVal1 = true;
        input.next('div.error_text').remove();
        input.removeClass('highlight');
        // Get all the classes of the current input
        if(this.className) {
            var classes = this.className.split(/\s+/);
            for(var p in classes) {
                if(classes[p] in validators) {
                    returnVal1 = returnVal1 && validators[classes[p]] (input.val());
                }
            }
        }

        if(returnVal1 == false) {
            firsttime=true;
            $(this).removeClass('green');
            $(this).addClass('highlight');
            var $msg = $(this).attr('title');
            input.after('<div class="error_text">'+$msg+'/div>');
            flag4 = false; 
        }

        if(returnVal1 == true && firsttime == true) {
            input.addClass('green');
        }

    });
}

$('#submitbtn').click(function() {
    var flag1, flag2, flag3 = true;
    if(flag1 && flag2 && flag3 && flag4) {
        returnvalue = true;
    } else{
        returnvalue = false;
    }
    return returnvalue;
});

如果用户第一次输入时任何验证返回 false firsttime=true,. 用户第二次输入正确值时,该字段应变为绿色。为此我正在使用if(returnVal1 == true && firsttime == true)

4

1 回答 1

0

就像@nnnnnn 在评论中所说的那样,唯一flag4被设置的地方true是在变量声明中。但是为什么不将它添加到onblur函数的开头,然后它将被设置为,true除非它false被其他东西设置为,即有一个错误并且你将它设置为false.

$('#submit_form :input').not('#id1,#id2,#id3').blur(function() {
        flag4 = true;
        // ...
});
于 2013-10-23T09:38:10.023 回答