EN | CS | Přihlásit | Registrovat

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ů ConventionalRen­dereru:

$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 Comments feed

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?

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‘).li­ve(‚blur‘,fun­ction() {…

Oggy | 20. 7. 2010, 16:43 | comment

dotaz: jak by se skript dal upravit, aby šlo použít u např. image button ->setValidation­Scope(NULLL) ?

Login to submit a comment