vlastni JS validace formularoveho prvku

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
hury
Člen | 56
+
0
-

Aloha,

rad bych se zeptal jaka je spravna cesta (nejlepe nejaky priklad pouziti) vlastni JS validace inputu ve formu.

formular:

$form->addHidden('autor_id');
$form->addText('autor', 'Autor')
->setOmitted()
->addRule('FormValidators::AutorId', 'Vyplňte autora', 'autor_id');

a tridu FormValidators / public static function AutorId($control, $args) samozrejme…

jde o to, ze pole „autor“ neni nijak dulezite, tak ho ani neodesilam, ale dulezity je autor_id, coz se vyplni napriklad pres autocomplete z pole autora…

nemohl jsem pouzit primo na pole „autor“ addConditionOn(autor_id, filled)->addRule(…), protoze je tam nasazeny nejaky autocomplete, ktery ten input zduplikuje a pak stale hlasi chybu, jakoby nebyl vyplneny.

udelal jsem si JS:

Nette.validators.FormValidators_AutorId = function(elem, args, val) {
    var elHidden = $('input[name="'+args+'"]'); // name="autor_id"
    var elVal = Nette.getValue( elHidden );

    if (elVal > 0) {
        return true;
    }
    else {
		// kdyz je chyba
		// tady jsem zkousel focus() ale nevyvola se pri chybe
        return false;
    }
};

JS validuje dobre, ale pri chybe se mi nepresune focus() na prvek „autor“ ikdyz jsem do JS pridal inputAutor.focus(), ten JS se spousi jen po vykresleni stranky, nikoli pri chybe.

Diky za navedeni spravnym smerem.