Formulář submit – zákaz kl. enter

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

Ahoj všichny,
prosím poraďte mi, je možné zakázat odeslání formuláře klávesou ENTER.
Tak aby formulář de facto nereagoval na klávesu ENTER.

mooc díky

Michal Vyšinský
Člen | 608
+
0
-

Ahoj,
nevím, zda to jde nějak přímo v nette. Ale přes javascript to jde – pomůže tento článek

kralik
Člen | 230
+
0
-

díky

nevíte někdo zda to jde přímo v NETTE či jak to udělat v jQuery?

Mooc díky

Michal Vyšinský
Člen | 608
+
0
-

@dotTwelve: Tohle podle mně zakáže odeslání formu úplně (i s kliknutím na tlačítko) (ale nejsem si jistý)

Editoval CherryBoss (14. 2. 2012 9:31)

RiskyNet
Člen | 20
+
0
-

Můžeš použít toto (mám to někde z netu).

$('.noEnterSubmit').keypress(function(e){
    if ( e.which == 13 ) e.preventDefault();
});

Funguje na všechny inputy co mají class noEnterSubmit, což není úplně ideál, ale můžeš to upravit na celý formulář třeba.

$('form').keypress...

nebo použít filter() apod. to už je na tobě :)

kralik
Člen | 230
+
0
-

zkusil jsem do načítaného souboru my.js vložit

<?php
$('form').submit(function(){
    // On submit disable its submit button
    $('input[type=submit]', this).attr('disabled', 'disabled');
});
?>

a ENTER pořád funguje.

Nemůže to nějak souviset s tím, že form je class=„ajax“

použil jsem zde zveřejněný libs\AjaxForm.php

Ono totiž nefunguje ani FILLED

<?php
$form->addText('zasPS', 'Zásoba PS')
            ->controlPrototype
            ->autocomplete('off')
            ->addRule(Form::INTEGER, 'Musi se jednat o cislo.')
            ->addRule(Form::FILLED, 'Položka musí být vyplněná.');
?>

např. tato položka projde normálně když je NULL

moc díky

RiskyNet
Člen | 20
+
0
-

kralik napsal(a):

zkusil jsem do načítaného souboru my.js vložit

<?php
$('form').submit(function(){
    // On submit disable its submit button
    $('input[type=submit]', this).attr('disabled', 'disabled');
});
?>

a ENTER pořád funguje.

Tato verze co zkoušíš zakazuje tlačítko submit (nastavuje mu disabled). Zkus tu verzi co jsem poslal já, jen pokud máš class=„ajax“ tak to změn takto:

$('.ajax').keypress(function(e){
    if ( e.which == 13 ) e.preventDefault();
});
kralik
Člen | 230
+
0
-

RiskyNet napsal(a):

kralik napsal(a):

zkusil jsem do načítaného souboru my.js vložit

<?php
$('form').submit(function(){
    // On submit disable its submit button
    $('input[type=submit]', this).attr('disabled', 'disabled');
});
?>

a ENTER pořád funguje.

Tato verze co zkoušíš zakazuje tlačítko submit (nastavuje mu disabled). Zkus tu verzi co jsem poslal já, jen pokud máš class=„ajax“ tak to změn takto:

$('.ajax').keypress(function(e){
    if ( e.which == 13 ) e.preventDefault();
});

tak jsem zkoušel toto tvé, ale žádná změna.

Form je class=„ajax“

Formulář stále reaguje na enter.

Nerozumím proč, když mám nastaveno u prvků rule FILLED tak se formulář stejně potvrdí, i když toto pole je prázdné.

Toto by by de facto pomohlo, ale nevím proč je rule FILLED jakoby ignorováno.

Editoval kralik (15. 2. 2012 12:00)

RiskyNet
Člen | 20
+
0
-

Tak to bys asi musel ukázat kód vytvoření formuláře z presenteru. Samotný JS je funkční v čistém HTML nezkoušel jsem ho ale na Nette formuláři. Tak či onak by FILLED nemělo pustit, takže je možná chybka ještě někde jinde.