У меня есть форма, которую я проверяю на стороне сервера и добавляю стиль (красная граница), чтобы выяснить, какие поля являются недействительными, используя 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"
}
]