验证多个输入字段时,请不断更新错误消息

时间:2020-01-08 14:48:46

标签: javascript jquery json ajax

我有一种形式,我正在验证服务器端并添加样式(红色边框)以使用jQuery弄清哪些字段无效。底部还有一条消息,指出无效的原因。

边框可以正常工作,但问题是底部的消息。例如,当某些字段无效并且我已将其修复时,仍始终显示最后一条错误消息。

这是因为以下代码中的if语句:

$("body").on("blur","input",function(e){
    e.preventDefault();
    accountform = $(".account-form").serialize();
    $.ajax({
     type:'post',
     url:"includes/updateaccount.php",
     data:({accountform: accountform}),
     success:function(data){
         var obj = JSON.parse(data);

         for (var i = 0; i < obj.length; i++) {
             var status = obj[i].status;
             var field = obj[i].field;
             if(status == 'error'){
                 var message = obj[i].message;
                    $( "#updateresult" ).show().empty().append( message );
                    $( 'input[name="' + field + '"]' ).addClass('invalid-input');
             }else if(status == 'success'){
                 $( 'input[name="' + field + '"]' ).removeClass('invalid-input');
             }
         }
     }
 });
});

此代码:

if(status == 'error'){
    var message = obj[i].message;
    $( "#updateresult" ).show().empty().append( message );
    $( 'input[name="' + field + '"]' ).addClass('invalid-input');
}else if(status == 'success'){
    $( 'input[name="' + field + '"]' ).removeClass('invalid-input');
}

一切正常时,不删除消息。这是因为,如果一个输入字段的状态为success,将完全没有错误消息。

我尝试过:

if(status == 'error'){
    var message = obj[i].message;
    $( "#updateresult" ).show().empty().append( message );
    $( 'input[name="' + field + '"]' ).addClass('invalid-input');
}else if(status == 'success'){
    $( 'input[name="' + field + '"]' ).removeClass('invalid-input');
    $( "#updateresult" ).hide();
}

但是,就像我说的那样,这消除了错误消息,因为如果一个输入字段的状态为error,它永远不会达到success状态。

这是我收到的JSON的示例:

[ 
    { 
    "status":"error",
    "field":"voornaam",
    "message":"Vul een voornaam in"
    },
    { 
    "status":"success",
    "field":"achternaam"
    },
    { 
    "status":"error",
    "field":"telefoon",
    "message":"Vul een telefoonnummer in"
    },
    { 
    "status":"success",
    "field":"email"
    },
    { 
    "status":"success",
    "field":"huisnummer"
    },
    { 
    "status":"success",
    "field":"postcode"
    },
    { 
    "status":"success",
    "field":"straat"
    },
    { 
    "status":"success",
    "field":"woonplaats"
    }
]

0 个答案:

没有答案
相关问题