Постановка задачи:
Мне необходимо написать код, который перед отправкой формы проверит, заполнены ли все необходимые поля. Если не все поля заполнены, необходимо выделить их красным цветом и не отправлять форму.
Теперь код существует в таком виде:
function formsubmit(formName, reqFieldArr){
var curForm = new formObj(formName, reqFieldArr);
if(curForm.valid)
curForm.send();
else
curForm.paint();
}
function formObj(formName, reqFieldArr){
var filledCount = 0;
var fieldArr = new Array();
for(i=reqFieldArr.length-1; i>=0; i--){
fieldArr[i] = new fieldObj(formName, reqFieldArr[i]);
if(fieldArr[i].filled == true)
filledCount++;
}
if(filledCount == fieldArr.length)
this.valid = true;
else
this.valid = false;
this.paint = function(){
for(i=fieldArr.length-1; i>=0; i--){
if(fieldArr[i].filled == false)
fieldArr[i].paintInRed();
else
fieldArr[i].unPaintInRed();
}
}
this.send = function(){
document.forms[formName].submit();
}
}
function fieldObj(formName, fName){
var curField = document.forms[formName].elements[fName];
if(curField.value != '')
this.filled = true;
else
this.filled = false;
this.paintInRed = function(){
curField.addClassName('red');
}
this.unPaintInRed = function(){
curField.removeClassName('red');
}
}
Функция вызывается таким образом:
<input type="button" onClick="formsubmit('orderform', ['name', 'post', 'payer', 'recipient', 'good'])" value="send" />
Теперь код работает. Но я бы хотел добавить в него « динамизм ».
Что мне необходимо: сохранить исходный код принципиально, добавить поля прослушивания формы (только необходимые для заполнения).
Например, когда поле выделено красным цветом и пользователь начинает его заполнять, оно должно стать белым.
На самом деле мне нужно добавить прослушивание событий: onChange, blur для пустых полей формы. Как это сделать в рамках исходного кода.
Если весь мой код - полная чушь, дайте мне знать об этом. Как мне это изменить используя объектно-ориентированный подход.
Дайте мне чистое решение javascript, пожалуйста. Jquery - отличная библиотека, но она не подходит для меня.