Created
May 31, 2013 19:44
-
-
Save enumag/5687497 to your computer and use it in GitHub Desktop.
Form messages
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Display error message. | |
*/ | |
Nette.addError = function(elem, message) { | |
var el = $(elem); | |
el.closest('.control-group').addClass('error'); | |
el.closest('.controls').children('.help-inline').remove(); | |
el.closest('.controls').append(' ', $('<p>', { | |
text: message, | |
'class': 'help-inline' | |
})); | |
}; | |
/** | |
* Removes error message. | |
*/ | |
Nette.removeError = function(elem) { | |
var el = $(elem); | |
el.closest('.control-group').removeClass('error'); | |
el.closest('.controls').children('.help-inline').remove(); | |
}; | |
/** | |
* Validates whole form. | |
*/ | |
Nette.validateForm = function(sender) { | |
var form = sender.form || sender; | |
if (form['nette-submittedBy'] && form['nette-submittedBy'].getAttribute('formnovalidate') !== null) { | |
return true; | |
} | |
var success = true; | |
for (var i = 0; i < form.elements.length; i++) { | |
var elem = form.elements[i]; | |
if (!(elem.nodeName.toLowerCase() in {input: 1, select: 1, textarea: 1}) || | |
(elem.type in {hidden: 1, submit: 1, image: 1, reset: 1}) || | |
elem.disabled || elem.readonly | |
) { | |
continue; | |
} | |
if (!Nette.validateControl(elem)) { | |
if (success && elem.focus) { | |
elem.focus(); | |
} | |
success = false; | |
} | |
} | |
return success; | |
}; | |
/** | |
* Setup handlers. | |
*/ | |
Nette.initForm = function(form) { | |
form.noValidate = 'novalidate'; | |
Nette.addEvent(form, 'submit', function(e) { | |
if (!Nette.validateForm(form)) { | |
e = e || event; | |
e.cancelBubble = true; | |
if (e.stopPropagation) { | |
e.stopPropagation(); | |
} | |
return false; | |
} | |
}); | |
Nette.addEvent(form, 'click', function(e) { | |
e = e || event; | |
var target = e.target || e.srcElement; | |
form['nette-submittedBy'] = (target.type in {submit: 1, image: 1}) ? target : null; | |
}); | |
for (var i = 0; i < form.elements.length; i++) { | |
Nette.addEvent(form.elements[i], 'blur', function(e) { | |
Nette.removeError(this); | |
Nette.validateControl(this); | |
}); | |
Nette.toggleControl(form.elements[i], null, true); | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment