Obsah
jQuery Nette Live Form Validator
Script upravující chování klientské validace formulářů.
Validuje se totiž control po controlu ‚za běhu‘ při vyplňování formuláře, nikoli až při odeslání formuláře. A místo alertu se tato informace vypisuje za políčky.
| Download | jnlfv.js 1.3KB |
|---|---|
| Verze | 1.2 |
| Demo | zde |
| Autor | Patrik Votoček (Vrtak-CZ) |
| Licence | New BSD License |
| GitHub | http://github.com/Nella/JNLFV |
Kód
/**
* JNLFV - jQuery Nette Live Form Validator
*
* @copyright Copyright (c) 2006, 2010 Patrik Votoček
* @license New BSD
* @link addons.nette.org/cs/jquery-nette-live-form-validator
* @package Nette
* @version 1.2
*/
var nette = nette || { };
nette.validateEntity = function(el) {
var form = $(el).parents('form');
if (nette.forms != null && nette.forms[form.attr('id')]) {
if (nette.forms[form.attr('id')].validators[$(el).attr('name')]){
var message = nette.forms[form.attr('id')].validators[$(el).attr('name')](form[0])
if (message) {
$(el).after('<p class="error">'+message+'</p>');
return false;
}
}
}
return true;
}
$(document).ready(function() {
$('form input, form select, form textarea').live('blur', function() {
$(this).next('.error').remove();
nette.validateEntity(this);
});
$('form').attr('onSubmit', null).submit(function() {
if (nette.forms == null || (nette.forms != null && nette.forms[$(this).attr('id')] == null))
return true;
var el = null;
$(this).find('.error').remove();
$(this).find('input, select, textarea').each(function() {
res = nette.validateEntity(this);
if (res == false && el == null) el = this;
});
if (el != null) {
$(el).focus();
return false;
} else {
return true;
}
});
});
Doporučené nastavení wrapperů ConventionalRendereru:
$renderer = $form->getRenderer();
$renderer->wrappers['form']['errors'] = FALSE;
$renderer->wrappers['error']['container'] = NULL;
$renderer->wrappers['error']['item'] = "p class=error";
$renderer->wrappers['control']['errors'] = TRUE;
$renderer->wrappers['label']['errors'] = NULL;
Komentáře 
fak | 16. 4. 2010, 21:36 | comment
tak jsem se snažil to rozchodit, ale v js jsem objevil chybu, nebo aspoň mě to nefungovalo s form.attr(‚id‘), musel jsem to vyměnit za form.attr(‚name‘) a jede to fajnově.
Šaman | 26. 4. 2010, 16:51 | comment
2 fak: Za to může změna v nette rel 9.4 (http://forum.nette.org/…-verze-0-9-4)
Oggy | 15. 7. 2010, 15:44 | comment
málá úprava..pokud to někdo chce použít ve snippetu po překreslení.. stačí jej navázat na live.. řádek 26: … $(‚form input, form select, form textarea‘).live(‚blur‘,function() {…
Oggy | 20. 7. 2010, 16:43 | comment
dotaz: jak by se skript dal upravit, aby šlo použít u např. image button ->setValidationScope(NULLL) ?




fak | 16. 4. 2010, 14:38 | question
Pěkně pěkně, to je jednodušší verze live form validation že? Funguje tu všechno stejně jako po kliknutí v holym nette na formulář a co podmínky Condition On? Do tohohle se dá dopsat i kontrola na username v db ajaxem, když znám jquery, že?
je o tom někde ve foru?