Formulář a propojení s JavaScriptem

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

Ahoj,
z Nette bych chtěl zatím použít jen formuláře, ale nevím, jak je propojit s JavaScriptem (případně AJAXem). Uvedený JS kód nefunguje, protože Nette přidává do názvu ‚-‘. Jak to lze vyřešit?

<script src=„netteForms.js“></script>
<script>
function vytvorkod(){
var jmeno = document.getElementById(‚frmoperator-jmeno‘);
var prijmeni = document.getElementById(‚frmoperator-prijmeni‘);
var kod = jmeno.value.substring(0,1) + prijmeni.value.substring(0, 2);
kod = kod.toLowerCase();
return kod;
}
</script>

<?php
require_once '../minified/NForms.php';
$form = new NForm('operator');

$form->addGroup('Jméno');
$form->addText('jmeno', 'Jméno: ')
		->addRule(NForm::FILLED, 'Jméno musí být vyplněno.');
$form->addText('prijmeni', 'Příjmení: ')
		->addRule(NForm::FILLED, 'Příjmení musí být vyplěno.')
		->getControlPrototype()->onBlur('this.form.frm-operatorkod.value = vytvorkod();');
$form->addText('operatorkod', 'Kód: ');

$form->addGroup();
$form->addSubmit('ulozit', 'Uložit');

if ($form->isSubmitted()) {

	// submitted and valid
	$hodnoty = $form->getValues();
	var_dump($hodnoty);
}

echo $form;
?>
bojovyletoun
Člen | 667
+
0
-

do kterého názvu?

tondovo
Člen | 10
+
0
-

bojovyletoun napsal(a):

do kterého názvu?

Omlouvám se, že jsem se vyjádřil nepřesně. Do id, například:
<input type=„text“ class=„text“ name=„jmeno“ id=„frmoperator-jmeno“ required=„required“ …>

duke
Člen | 650
+
0
-

Místo

this.form.frm-operatorkod.value = vytvorkod();

lze použít

this.form['frm-operatorkod'].value = vytvorkod();

Můžeš použít také např. jquery:

$('#frm-operatorkod').val(vytvorkod());

Nicméně doporučuji spíše použít unobtrusive javascript (nejlíp s jquery), než přímo nastavovat atribut onblur. Např. takto:

$('#frm-prijmeni').blur(function () {
  $('#frm-operatorkod').val(vytvorkod());
});

Krom toho můžeš u jednotlivých prvků formuláře nastavit vlastní id metodou setHtmlId.

Editoval duke (25. 12. 2011 2:58)

tondovo
Člen | 10
+
0
-

duke napsal(a):

Krom toho můžeš u jednotlivých prvků formuláře nastavit vlastní id metodou setHtmlId.

To je přesně ono. Díky.