| 38 | | * - Ajouter la classe "required" au champs requis |
| 39 | | * - Ajouter la classe "mail" au champs email |
| 40 | | * - Définir un Hash avec les messages d'erreur |
| | 56 | * 1. Ajouter la classe CSS "required" au champs requis |
| | 57 | * |
| | 58 | * 2. Ajouter la classe CSS "email" au champs email |
| | 59 | * |
| | 60 | * 3. Ajouter la classe CSS "confirmEmail" au champs email de confirmation |
| | 61 | * |
| | 62 | * 4. Ajouter la classe CSS "confirmPassword" au champs de confirmation du mot de passse |
| | 63 | * |
| | 64 | * 5. Ajouter la classe CSS "checked" au champs case à cocher |
| | 65 | * |
| | 66 | * Remarque : Possibilité de combo class="required email confirmEmail" |
| | 67 | * |
| | 68 | * 6. Définir un Hash avec les messages d'erreur |
| | 69 | * <code>var formMsgError = new Hash({ |
| | 70 | * idChamps1_EMPTY: 'Le champs "Mail" est vide', |
| | 71 | * idChamps2_EMPTY: 'Le champs "Nom" est vide' |
| | 72 | * });</code> |
| | 73 | * |
| | 74 | * 7. Lancez le contrôle des formulaires au domready |
| 42 | | * var verif = new verifForm( form2Verif, btnSubmit, addMessageAfter, formMsgError ); ); |
| 43 | | * verif.initialize(); |
| | 76 | * var params = new Hash({ |
| | 77 | * // Obligatoires |
| | 78 | * 'form2Verif': $('form2Verif'), |
| | 79 | * 'btnSubmit': $('btnSubmit'), |
| | 80 | * 'addMessageHere': $('anchorTop'), |
| | 81 | * 'formMsgError': $('msgError'), |
| | 82 | * // Optionnels |
| | 83 | * 'msgErrorRedirect': 'top' |
| | 84 | * }); |
| | 85 | * var verif = new verifForm( params ); |
| | 86 | * verif.init(); |
| 51 | | function verifForm( form2Verif, btnSubmit, addMessageAfter, formMsgError ) { |
| 52 | | |
| 53 | | this.form2Verif = form2Verif; // Formulaire à contrôler |
| 54 | | this.btnSubmit = btnSubmit; // Bouton submit |
| 55 | | this.addMessageAfter = addMessageAfter; // Ajouter le message d'erreur après |
| 56 | | this.formMsgError = formMsgError; // Messages d'erreur |
| 57 | | this.valid = true; // Le formulaire remplit-il toutes les conditions ? |
| 58 | | this.msgError = new Array(); // Evntuelles erreurs |
| 59 | | |
| 60 | | |
| 61 | | /* |
| 62 | | * Initialisation de la fonction. |
| | 107 | function verifForm( params ) { |
| | 108 | |
| | 109 | this.params = params; // Tableau des paramètres |
| | 110 | this.form2Verif = this.params.get('form2Verif'); // Elément du formulaire à contrôler |
| | 111 | this.btnSubmit = this.params.get('btnSubmit'); // Elément du bouton submit de validation |
| | 112 | this.addMessageHere = this.params.get('addMessageHere'); // Ajouter le message d'erreur après l'élément |
| | 113 | this.formMsgError = this.params.get('formMsgError'); // Hash contenant les messages d'erreur |
| | 114 | |
| | 115 | this.valid = true; // Le formulaire remplit-il toutes les conditions ? |
| | 116 | this.msgError = new Array(); // Listes des éventuelles erreurs |
| | 117 | |
| | 118 | |
| | 119 | |
| | 120 | /* |
| | 121 | * Initialisation de la fonction. Pseudo constructeur. |
| | 199 | * Vérification des champs email de confirmation. |
| | 200 | * |
| | 201 | * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com> |
| | 202 | * @since 1.2 |
| | 203 | * @TODO : Voir si on ne peut pas utiliser la fonction plusieur fois |
| | 204 | */ |
| | 205 | this.isSameMail = function isSameMail() { |
| | 206 | |
| | 207 | var inputIsSameMail = $ES('input.confirmEmail', this.form2Verif); |
| | 208 | |
| | 209 | if ( inputIsSameMail.length == 2 ) { |
| | 210 | if ( inputIsSameMail[0].value.clean() != inputIsSameMail[1].value.clean() ) { |
| | 211 | inputIsSameMail[0].addClass('error'); |
| | 212 | this.inputError( inputIsSameMail[1], "NOTSAMEMAIL" ); |
| | 213 | } |
| | 214 | else { |
| | 215 | inputIsSameMail[0].removeClass('error'); |
| | 216 | inputIsSameMail[1].removeClass('error'); |
| | 217 | } |
| | 218 | } |
| | 219 | }; |
| | 220 | |
| | 221 | |
| | 222 | |
| | 223 | /* |
| | 224 | * Vérification des champs confirmation du mot de passe. |
| | 225 | * |
| | 226 | * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com> |
| | 227 | * @since 1.2 |
| | 228 | */ |
| | 229 | this.isSamePassword = function isSamePassword() { |
| | 230 | |
| | 231 | var inputIsSamePassword = $ES('input.confirmPassword', this.form2Verif); |
| | 232 | |
| | 233 | if ( inputIsSamePassword.length == 2 ) { |
| | 234 | if ( inputIsSamePassword[0].value.clean() != inputIsSamePassword[1].value.clean() ) { |
| | 235 | inputIsSamePassword[0].addClass('error'); |
| | 236 | this.inputError( inputIsSamePassword[1], "NOTSAMEPAWD" ); |
| | 237 | } |
| | 238 | else { |
| | 239 | inputIsSamePassword[0].removeClass('error'); |
| | 240 | inputIsSamePassword[1].removeClass('error'); |
| | 241 | } |
| | 242 | } |
| | 243 | }; |
| | 244 | |
| | 245 | |
| | 246 | |
| | 247 | /* |
| | 248 | * Vérification des champs case à cocher. |
| | 249 | * |
| | 250 | * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com> |
| | 251 | * @since 1.4 |
| | 252 | */ |
| | 253 | this.isChecked = function isChecked() { |
| | 254 | |
| | 255 | var inputIsChecked = $ES('.checked', this.form2Verif); |
| | 256 | inputIsChecked.each( function(input) { |
| | 257 | if ( !input.checked ) { |
| | 258 | this.inputError( input, "NOTCHECKED" ); |
| | 259 | } |
| | 260 | else { |
| | 261 | input.removeClass('error'); |
| | 262 | } |
| | 263 | }.bind(this)); |
| | 264 | }; |
| | 265 | |
| | 266 | |
| | 267 | |
| | 268 | /* |
| | 269 | * Possibilité de faire des hooks pour rajouter des tests. |
| | 270 | * |
| | 271 | * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com> |
| | 272 | * @since 1.3 |
| | 273 | */ |
| | 274 | this.hookTest = function hookTest() { |
| | 275 | this.consoleLog("No hookTest"); |
| | 276 | }; |
| | 277 | |
| | 278 | |
| | 279 | |
| | 280 | /* |
| | 281 | * Possibilité de faire des hooks pour rajouter des actions avant de soumettre. |
| | 282 | * |
| | 283 | * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com> |
| | 284 | * @since 1.3 |
| | 285 | */ |
| | 286 | this.hookSubmit = function hookSubmit() { |
| | 287 | this.consoleLog("No hooksubmit"); |
| | 288 | }; |
| | 289 | |
| | 290 | |
| | 291 | |
| | 292 | /* |
| | 293 | * traitement du champ sur une erreure. |
| | 294 | * |
| | 295 | * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com> |
| | 296 | * @since 1.4 |
| | 297 | * @param input imput Champ en erreur |
| | 298 | * @param suffix string Suffix de l'ereur |
| | 299 | */ |
| | 300 | this.inputError = function inputError ( input, suffix ) { |
| | 301 | |
| | 302 | this.valid = false; |
| | 303 | input.addClass('error'); |
| | 304 | if ( input.id != "" ) { |
| | 305 | this.msgError[this.msgError.length] = input.id + "_" + suffix; |
| | 306 | } |
| | 307 | else { |
| | 308 | this.consoleLog("No id for input"); |
| | 309 | } |
| | 310 | } |
| | 311 | |
| | 312 | |
| | 313 | |
| | 314 | /* |
| | 315 | * Ecriture dnas la console de fireBug du champ sur une erreure. |
| | 316 | * |
| | 317 | * @author Guillaume Kulakowski <guillaume_AT_llaumgui_DOT_com> |
| | 318 | * @since 1.4 |
| | 319 | * @param msg string Suffix de l'ereur |
| | 320 | */ |
| | 321 | this.consoleLog = function consoleLog ( msg ) { |
| | 322 | |
| | 323 | if( console.log ) { |
| | 324 | console.log(msg); |
| | 325 | } |
| | 326 | } |
| | 327 | |
| | 328 | |
| | 329 | /* |
| 144 | | if ( this.valid == false ) { |
| 145 | | |
| 146 | | ul_error = new Element('ul'); |
| 147 | | ul_error.setProperty('id', 'error_list'); |
| 148 | | ul_error.injectAfter( this.addMessageAfter ); |
| 149 | | |
| 150 | | this.msgError.each(function(item, index){ |
| 151 | | li = new Element('li', {} ) ; |
| 152 | | ul_error.adopt( li ); |
| 153 | | li.setText( this.formMsgError.get(item) ); |
| 154 | | }); |
| | 338 | if ( this.valid == false ) { |
| | 339 | e = new Event(e); |
| | 340 | |
| | 341 | if ( this.msgError.length > 0 ) { |
| | 342 | ul_error = new Element('ul'); |
| | 343 | ul_error.setProperty('id', 'error_list'); |
| | 344 | ul_error.injectTop( this.addMessageHere ); |
| | 345 | |
| | 346 | this.msgError.each(function(item, index){ |
| | 347 | li = new Element('li', {} ) ; |
| | 348 | ul_error.adopt( li ); |
| | 349 | msg = this.formMsgError.get(item); |
| | 350 | if ( msg == null ) { |
| | 351 | msg = "Error on " + item; |
| | 352 | } |
| | 353 | li.setText( msg ); |
| | 354 | }); |
| | 355 | } |
| | 356 | else { |
| | 357 | this.consoleLog( "msgError length <= 0"); |
| | 358 | } |
| | 359 | |