我有一种形式,我正在验证服务器端并添加样式(红色边框)以使用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"
}
]