Я использую JavaScript для проверки некоторых элементов формы. Поля, которые я хочу заполнить, передаются в мою функцию validateReqFields при отправке формы. Все работает отлично, пока я не доберусь до цикла for, который предназначен для добавления сообщения об ошибке пустым рядом с полем формы. Похоже, что как только одно поле завершается сбоем и оно добавляет сообщение в div, цикл for не продолжается.
Элементы HTML-формы:
First Name <input type="text" name="firstName" onkeypress="return checkField(event, letters);"/><div id="firstNameMsg" style="display:inline-block;"></div>
<br>
Last Name <input type="text" name="lastName" onkeypress="return checkField(event, letters);"/><div id="lastNameMsg" style="display:inline-block;"></div>
Функция Javascript:
function validateReqFields(formName, reqFields){
var fieldArray = reqFields.split(",");
var failedList = new Array();
var message = "Required Field";
for(var i=0; i<fieldArray.length; i++){
removeWhiteSpace(fieldArray[i]);
var s = eval('document.'+formName+'.'+fieldArray[i]+'.value');
if(s.length<1) { failedList.push(fieldArray[i]); }
}
if(failedList.length >= 1) {
for(var i=0; i<failedList.length; i++) {
//BUG - Only shows first failed field.
document.getElementById(failedList[i] + 'Msg').innerHTML = message;
}
} else {
document.mForm.submit();
}
}
function removeWhiteSpace(mString){
mString = mString.replace(/(^\s+|\s+$)/g,' ');
return mString;
}
Я провел несколько тестов и пришел к выводу, что когда циклы for устанавливают innerHtml в первом элементе div, это прерывает цикл for. Есть ли способ избежать этого?