Autor Zpráva
Matyáš
Profil
Dobrý den,
Potřeboval bych poradit s tímto:
Mám klasický formulář <form> s <input type="text/password..."> a před jeho odesláním na server bych potřeboval javascriptem zkontrolovat, zda pole nejsou prázdná a pokud v nich jsou údaje splňující kritéria. Pokud ne, zrušit odesílání a zobrazit alert. Aby nebyl zbyteně zatěžován server.

Šlo by pomocí form action spustit javascript?
Děkuji!
_es
Profil
<form onsubmit="return kontrola()"
Ak funkcia kontrola vráti false, bude odoslanie formulára zrušené.
Marschmallow
Profil
Matyáš:
Přečti si tenhle článek.
pcmanik
Profil
Matyáš:
Na formulárových prvkov môžeš taktiež využiť atribút required, ktorý v podporovaných prehliadačoch (IE>9) zablokuje samotné odoslanie formulára a upozorní užívateľa že pole je povinné. Taktiež môžes využit iné typy inputu - email, number atď. Pričom v nepodporovaných prehliadačoch sa degradúju na klasický input type text.
Samozrejme nezabúdni na validáciu na strane servera.
_es
Profil
[#3] Marschmallow:
Čo má s dotazom spoločný ten „článok“? Ešte k tomu z takého nedôveryhodného zdroja.
Matyáš
Profil
Děkuji! Vyzkouším to.
Matyáš
Profil
_es:
Toto samozřejmě funguje, ale zajímalo by mě, jestli je možné tímto způsobem volat funkci z externího .js souboru.
Děkuji!
Taps
Profil
Matyáš:
ano, mozne to je, je vsak potreba externi soubor nacist do dane stranky, viz. Začlenění skriptu do stránky
Matyáš
Profil
Jasně, nevím, proč mě to nenapadlo.
Ještě jedna otázka: Pokud tímto kódem testuji délku uživatelského jména, délku hesla při registraci, a dejme tomu, že by na tom později něco záleželo, dal by se tento javascript obejít? Dosud jsem to řešil pomocí PHP, což je myslím zbytečné zatěžování serveru. Nemyslíte si, že by se javascript dal obejít jednoduššeji, než PHP?
Marschmallow
Profil
Matyáš:
Klient (uživatel) si může JavaScript kdykoliv vypnout a pak by tedy kontrola nefungovala.
Taps
Profil
Matyáš:
Nejlépe je ošetřit délku uživatelského jména jak na úrovni javascriptu tak na úrovni PHP (pro případ, že by si uživatel vypnul javascript)
Matyáš
Profil
Nevíte, v čem může být problém, když IE 11 vůbec JS nespustí a hned formulář odešle?
Vyzkoušeno odpojením od internetu, kdy Mozila zobrazovala hlášky, zatímco IE chtěl přesměrovat.
Taps
Profil
Matyáš:
ukaž kód
Matyáš
Profil
<script type="text/javascript" src="funkce.js"></script>
<script type="text/javascript">
  function kontrola()
  {
    if(uzivatelske_jmeno.value != "" && heslo.value != "")
    { 
      if(kontrola_uzivatelske_jmeno(uzivatelske_jmeno.value) && heslo.value.length >= 5 && heslo.value.length <= 20)
      {
        return true;
      }
      else {alert("Uživatelské jméno, nebo heslo neodpovídá požadavkům na délku."); return false;}
    }
    else {alert("Musíte vyplnit všechny položky"); return false;}
  }
</script>

<form method="POST" onsubmit="return kontrola()" action="prihlaseni.php">

V souboru funkce.js je funkce kontrola_uzivatelske_jmeno.
Fisir
Profil
Reaguji na Matyáše:
To na řádku 12 má být co?
Matyáš
Profil
Předchozí zprávu jsem upravil, ta chyba vznikla zřejmě vkládáním do fóra, na serveru nic takového nebylo.
Taps
Profil
Matyáš:
a co obsahuje tato funkce?
kontrola_uzivatelske_jmeno
Matyáš
Profil
function kontrola_uzivatelske_jmeno(uzivatelske_jmeno)
{
  if(uzivatelske_jmeno.length >= 3 && uzivatelske_jmeno.length <= 15)
    return true;
  else return false;
}
Taps
Profil
Matyáš:
Funkční ukázka http://kod.djpw.cz/jgjb
Matyáš
Profil
Aha, bylo potřeba doplnit vstupní hodnotu this k funkci kontrola. A pak samozřejmě adresování např. form.uzivatelske_jmeno.value...
Je to zajímavé že to Mozila brala a IE ne, nicméně, funguje to.
Děkuji!

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: