Autor Zpráva
jpru
Profil
Už jsem trochu v koncích a chtěl bych Vás požádat o radu. Mám vytvořený jednoduchý formulář a chci využít atribut required pro ověření zda je vyplněné pole. Bohužel mi to vůbec neověřuje a formulář lze odeslat prázdný.

<form action="formular.php" method="post">
  <input name="name" type="text" onfocus="if (this.value == this.defaultValue) this.value = ''" onblur="if (this.value == '') this.value = this.defaultValue" value="* Jméno" required  >
  <p>
  <input name="email" type="email" onfocus="if (this.value == this.defaultValue) this.value = ''" onblur="if (this.value == '') this.value = this.defaultValue" value="* E-mail" required  >
  <p>
  <input name="tel" type="tel" onfocus="if (this.value == this.defaultValue) this.value = ''" onblur="if (this.value == '') this.value = this.defaultValue" value=" Telefon" >
  <p>                           
  <textarea name="comments" onfocus="if(this.value == '* Vaše zpráva') { this.value = ''; }" onblur="if (this.value == '') { this.value='* Vaše zpráva'; }">* Vaše zpráva</textarea required  >
  <p> 
  <input name="submit" class="submit" value="ODESLAT" type="submit">
  </form>

Díky za rady.
xROAL
Profil
V kóde nevidím problém, okrem:
<textarea name="comments" onfocus="if(this.value == '* Vaše zpráva') { this.value = ''; }" onblur="if (this.value == '') { this.value='* Vaše zpráva'; }">* Vaše zpráva</textarea required  >
To takto rozhodne nemá byť. Malo by to vyzerať skôr takto:
<textarea name="comments" onfocus="if(this.value == '* Vaše zpráva') { this.value = ''; }" onblur="if (this.value == '') { this.value='* Vaše zpráva'; }" required>* Vaše zpráva</textarea>

Každopádne, na overenie na strane klienta (prehliadača) sa nemôžeš spoliehať. Na načítanej stránke sa dá required v pohode vymazať, niektoré prehliadače ho ani nepoznajú a budú ho ignorovať, čím sa každé pole bude dať poslať aj nevyplnené. Kontrola (vstupu od užívateľa) musí vždy prebiehať na strane serveru.

Ešte taká poznámočka: sám inputom nastavuješ value="niečo", čím je podmienka required už splnená.
Chamurappi
Profil
Reaguji na jpru:
Možná svoji stránku zkoušíš v prohlížeči, který required nezná.
Lepší je kontrolovat vstupy i JavaScriptem (onsubmit na elementu <form>).

Dvě poznámky trochu mimo téma:
1) Na <textarea> můžeš také používat defaultValue.
2) Můžu se zeptat, proč nepoužíváš normálně <label>? Co z toho uživatel má, když před odesláním na vyplněném formuláři nevidí, co do které kolonky patří? Vyplňování podobných formulářů je velmi nepříjemné, je tvým cílem odradit uživatele od vyplnění?
jpru
Profil
Díky za reakci a rád ti odpovím. Já vůbec nevím proč jsem to tak udělal. Prostě se mi zapne stav bezmozek a píšu. Už pracuji na opravě.

Ještě jednou díky J.
Joker
Profil
Chamurappi:
Lepší je kontrolovat vstupy i JavaScriptem

Ještě doplním, že i pak je nutné ty kontroly udělat ještě jednou při zpracování na serveru (neboli zpracování na serveru by s daty mělo zacházet jako kdyby kontroly na klientovi vůbec neproběhly).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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