JQuery验证器 - 更改响应颜色

时间:2015-06-29 09:32:27

标签: javascript jquery ajax validation

我正在使用JQuery验证器插件。我有一个提交处理程序,如下所示:

submitHandler: function (form) {
    $.ajax({
        type: "POST",
        url: "php/process.php",
        data: {
            'emailAddress': $("#emailAddress").val(),
        },
        dataType: "json"
    }).done(function (response) {
            if(response[1] == 'Rejected'){
                $('#spanOne').addClass('red');
            }
            if(response[1] == 'Approved'){
               $('#spanOne').addClass('green');
            }
            if(response[3] == 'Rejected'){
               $('#spanTwo').addClass('red');
            }
            if(response[3] == 'Approved'){
               $('#spanTwo').addClass('green');
            }

            if(response[0] == 'F'){
                $('#spanOne').html('Your email has been ' + response[1]);
            }
            else{
                $('#spanOne').html(response[0] + ' has been ' + response[1]);
            }
            if(response[2] == 'F'){
                $('#spanTwo').html('Your mobile number has been ' + response[3]);
            }
            else{
                $('#spanTwo').html(response[2] + ' has been ' + response[3]);
            }
    });
    return false;
}

现在第一个问题是我的功能对我来说似乎很麻烦。基本上,我发布了所有代码,但我的回答是以下形式:

["F", "Rejected", "07364928374", "Approved", "ABC123"]

基本上,如果位置1被拒绝,我需要spanOne为红色,否则它应该是绿色。同样适用于第3位。

我还有一个invalidHandler,它与上面的内容类似。它有点工作,如果我输入无效的电子邮件,它显示为红色。但是,如果我然后提交有效的电子邮件,虽然它显示为“已批准”,但它仍保持红色。所以似乎完成功能没有更新?实质上,它似乎只在第一次提交时起作用。

如何改善这一点以使其始终有效?

由于

1 个答案:

答案 0 :(得分:0)

根据您的说明,我猜您在提交无效数据时会添加red课程,但在您再次提交时却不会将其删除。因此,即使添加了green类,red类仍然存在并且可以覆盖它。

提交时第二次检查您的电子邮件字段。它是否同时包含redgreen类?如果是这样,请在done回调的最顶部添加以下内容:

$('#spanOne, #spanTwo').removeClass('red green')