Našeptávač – odeslání Ajaxového formuláře javascriptem

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

Zdravím vás,
zkouším si udělat jednoduchý našeptávač, ale nevím zcela přesně jestli to dělám dobře.
mám formulář, který funguje ajaxově i klasicky s redirectem:

public function createComponentSearchForm(){
	$form = new Form;
	$form->getElementPrototype()->class[] = 'ajax';
	$form->addText('keyword', 'Klíčové slovo:');
	$form->addSubmit('send','Vyhledat');
	$form->onSuccess[] = $this->searchFormSucceeded;
	return $form;
}

public function searchFormSucceeded(Form $form){
    $this->keyword = $form->getValues()->keyword;
    if($this->presenter->isAjax()) $this->redrawControl('pictureList'); else $this->redirect('this');
}

V render metodě pak upravím výstup podle @persistent $this->keyword; – vyfiltruju natažená data z db a zobrazím.

Vše funguje, ale nyní potřebuju skrýt input submit a dělat to onkeyup (například).
Jenže když doplním k formuláři

$form->getElementPrototype()->onkeyup[] = 'submit();';

tak se to už ajaxově neodesílá. V čem je problém? Je jiný způsob jak se toto řeší?

Editoval thm (8. 9. 2014 14:45)

iguana007
Člen | 970
+
+2
-

Navěs to na input a ne na formulář

thm
Člen | 147
+
+1
-

iguana007 napsal(a):

Navěs to na input a ne na formulář

Díky moc. Tak to funguje :)

$form = new Form;
$form->getElementPrototype()->class[] = 'ajax';
$form->addText('keyword', 'Klíčové slovo:')
	->getControlPrototype()->onkeyup[] = '$("#send-button").submit()';
$form->addSubmit('send','Vyhledat')
	->setHtmlId('send-button');
$form->onSuccess[] = $this->searchFormSucceeded;
return $form;

Editoval thm (8. 9. 2014 15:14)

iguana007
Člen | 970
+
+2
-

Supr, tak a teď na to můžeš navěsit nějaký JS plugin, aby ti to fungovalo třeba až od třetího zadaného znaku + přidalo pár zajímavých features, ušetříš si tak spoustu zbytečných queries na aplikaci/databázi a budeš z toho mít plnohodnotný našeptávač ;)

Já třeba používám Typehead.js od Twitteru: https://github.com/…ypeahead.js/

thm
Člen | 147
+
0
-

Díky za tip. Mrknu na to. Snad pochopím, jak se to používá :) Určitě tam nenechám onkeyup, bylo by fajn – jak píšeš – odeslat od třetího znaku + navíc nechat nějakou prodlevu mezi klávesami, než se požadavek odešle.