Nette 2.1 – vlastní našeptávač

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

Zdravím,

hraju si a bastlim vlastní našeptávač pro input. Když do našeptávače začnu psát vidím vyhovující položky a klinutím na položku ji vyberu. To je OK.

Jenomže, klienti po zadání našeptávané fráze stísknou klávesu ENTER, čímž odešlou celý formumáž → bez vybráním položky. Jak zruším odesílání formuláře?

Stisk klávesy ENTER, dokážu chytit, jen nevím jak přerušit odesílání formuláře.

$("#naseptavac").keyup(function (e) {
    if (e.keyCode == 13) {
        alert("enter");
    }
});

Zkoušel jsem přerušit odesílání přes:

e.preventDefault();

ovšem nepomohlo – formulář se stále odeílá

Díky za rady

David Matějka
Moderator | 6445
+
0
-

keyup ⇒ keydown

motorcb
Člen | 552
+
0
-

@matej21:

Díky za radu, bihužel, stále nefunguje :-( Alert vyskočí, ale následně dojde k refreshi stránky :-(

$("#naseptavac").keydown(function (e) {
    if (e.keyCode == 13) {
        alert("enter");
        e.preventDefault();
        return false;
    }
});
motorcb
Člen | 552
+
0
-

Ukázka kódu pro nasimulování:

protected function createComponentTestForm()
    {
        $form = new Form;
        $form->addText( 'naseptavac', 'Text:' );

        $form->addSubmit( 'send', 'Uložit' );
        $form->onSuccess[] = $this->testFomrSucceeded;

        return $form;
    }

    public function testFomrSucceeded( $form )
    {
        $this->redirect( "this" );
    }
$(function() {

    $("#frm-testForm-naseptavac").keydown(function (e) {
        if (e.keyCode == 13) {
            alert("enter");
            e.preventDefault();
            return false;
        }
    })
};
vvoody
Člen | 910
+
0
-

Prečo by nemohli odoslať form? Prečo ich obmedzuješ len na výber z našeptávača?