Autor | Zpráva | ||
---|---|---|---|
first Profil * |
#1 · Zasláno: 29. 12. 2011, 20:38:17
Dobrý den,
mám formulář o čtyřech polích: <form method="post" name="register"> <p><input name="reg-name" class="atr" title="Sem zadejte svoje príhlašovací jméno." id="user_id" size="20" maxlenght="30" tabindex="1" type="text" value="" /> <label>Jméno</label></p><p class="message-name"></p> <p><input name="reg-email" class="atr" size="20" maxlenght="30" tabindex="2" type="text" value="" /> <label>E-mail</label></p><p class="message-email"></p> <p><input name="reg-pass" class="password_check atr" size="20" maxlenght="30" tabindex="3" type="password" /> <label>Heslo</label></p><p class="message-pass"></p> <p><input name="reg-pass2" class="atr" size="20" maxlenght="30" tabindex="4" type="password" /> <label>Heslo znovu</label></p><p class="message-pass2"></p> <p><input name="reg-submit"type="submit" tabindex="5" value="registrovat" /></p> <p class="results"></p> </form> Jednotlivé hodnoty z polí kontroluji Javascriptem a podle jejich správnosti přiřazuji hodnotu k logické proměnné. např: k poli jméno mam prom. nameValueJs = true/false -> podle toho jestli je to v pohodě nebo ne. To mi funguje.. když si hodnotu těch proměnných vypíši je to správně. Formulář chci odeslat pouze v případě, pokud jsou všechny proměnné true. Mám to takto: $("form[name='register']").submit( function(){ if (nameValueJs == false || mailValueJs == false || passValueJs == false || pass2ValueJs == false) { $(".results").text("Něco je špatně!"); //neodešle se return false; } //jinak se normálně odešle }); Problém je vtom že když je vše dobře tak se normálně odešle ale, když je jméno dobře a ostatní špatně tak se odešle též… Pokud je všechno špatně tak to správně vypíše hlášku. (Jinak to funguje dobře) Neví někdo, co to způsobuje? Díky moc. |
||
Radek9 Profil |
#2 · Zasláno: 29. 12. 2011, 21:02:36
A kde máš nějakou definici těch proměnných z podmínky? Kde se tam vzaly?
|
||
first Profil * |
#3 · Zasláno: 29. 12. 2011, 21:18:47
No to jsem zde neuváděl je to trochu složitější.. ale jak jsem říkal, když si je v tom submitu toho tlačítka vypíšu, tak jsou správně. Tam chyba nebude, to spíš někde v té podmínce.
Ale mám to takto: nameValueJs = false; $("input[name='reg-name']").focusout( function(){ //value from input var nameJs = $("input[name='reg-name']").val(); //send form $.getJSON("./scripts/reg.php", { namePhp: nameJs }, function(data) { $(".message-name").text(data.message).fadeIn(500); nameValueJs = data.nameValuePhp; }); }); if(isset($_GET['namePhp'])) { $namePhp = $_GET['namePhp']; $select = mysql_query("SELECT `name` FROM `users` WHERE `name`='".addslashes($namePhp)."'"); if ($namePhp == "") { die ('{"message": "Jméno není vyplněno!", "nameValuePhp": false}'); } else if (strlen($namePhp) < 4) { die ('{"message": "Jméno je příliš krátké!", "nameValuePhp": false}'); } else if (!preg_match('~^[_a-z0-9.-]*$~i', $namePhp)) { die ('{"message": "Jméno obsahuje neplatné znaky! Prosím zvolte jiné uživatelské jméno.", "nameValuePhp": false}'); } else if (mysql_num_rows($select)>0) { die ('{"message": "Uživatelské jméno je již používáno! Prosím zvolte jiné uživatelské jméno.", "nameValuePhp": false}'); } else { die ('{"message": "Uživatelské jméno lze použít.", "nameValuePhp": true}'); } } Tohle je pro pole jméno. Podobně je to udělané i pro ostatní políčka.. |
||
Camo Profil |
#4 · Zasláno: 30. 12. 2011, 23:04:33
To bude podľa mňa týmto: http://api.jquery.com/event.preventDefault/
|
||
first Profil * |
#5 · Zasláno: 31. 12. 2011, 14:10:08
Camo:
Díky. Nahradil jsem return false; tou funkcí, ale bohužel se to chová uplně stejně špatně :( Mám to takto: //odeslání registrace $("form[name='register']").submit( function(event){ if (nameValueJs == false || mailValueJs == false || passValueJs == false || pass2ValueJs == false) { $(".results").text("Něco je špatně!"); //neodešle se //return false; event.preventDefault(); } //jinak se normálně odešle }); |
||
Camo Profil |
#6 · Zasláno: 2. 1. 2012, 17:52:09 · Upravil/a: Camo
Neviem, len ma napadá, či je toto správny zápis selektora: $("form[name='register']").
Keď dáš do tej funkcie na začiatok nejaký alert, tak reaguje, či nie? |
||
first Profil * |
#7 · Zasláno: 3. 1. 2012, 15:26:59
Reaguje normálně ten selektor je správný.
|
||
Camo Profil |
#8 · Zasláno: 4. 1. 2012, 10:41:10 · Upravil/a: Camo
first:
Funguje aj return false aj preventDefault. chybu máš zrejme v tej podmienke... |
||
Chamurappi Profil |
#9 · Zasláno: 4. 1. 2012, 11:04:49
Reaguji na firsta:
Dáváš nám sem bezproblémový kód a necháváš nás spekulovat, v čem by mohl být problém, proto dostáváš špatné (a žádné) rady. Dodej odkaz na živou ukázku. |
||
Časová prodleva: 11 let
|
0