Énoncé du problème : Il est nécessaire pour moi d'écrire un code, si qui avant l'envoi du formulaire va vérifier tous les champs nécessaires sont remplis. Si tous les champs ne sont pas remplis, il est nécessaire d'attribuer leur couleur rouge et de ne pas envoyer le formulaire.
Maintenant le code existe dans ce genre :
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');
}
}
La fonction est provoquée de cette manière :
<input type="button" onClick="formsubmit('orderform', ['name', 'post', 'payer', 'recipient', 'good'])" value="send" />
Maintenant le code fonctionne. Mais je voudrais ajouter " dynamisme " en elle.
Qu'il me soit nécessaire : de garder un code initial essentiellement, d'ajouter des champs de formulaire d'écoute (uniquement nécessaires au remplissage).
Par exemple, lorsque le champ est attribué par la couleur rouge et que l'utilisateur commence à le remplir, il doit devenir blanc.
En fait j'ai besoin d'ajouter l'écoute des événements : onChange, blur pour les champs vides du formulaire. Comme il faut faire dans les limites d'un code initial.
Si tout mon code - plein de bêtises, faites-le moi savoir. Quant à moi il à changer en utilisant orienté vers l'objet l'approche.
Donnez-moi pur Solution par Javascript, s'il vous plaît. Jquery - excellente librairie, mais elle n'est pas approche pour moi.