Обновлять сообщение об ошибке при проверке нескольких полей ввода - PullRequest
0 голосов
/ 08 января 2020

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