Autor Zpráva
first
Profil *
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
A kde máš nějakou definici těch proměnných z podmínky? Kde se tam vzaly?
first
Profil *
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;
      });
});
K tomu je ještě skript v php (volá se tím ajaxem):
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
To bude podľa mňa týmto: http://api.jquery.com/event.preventDefault/
first
Profil *
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
    
       
     });
Možná to mám špatně použité. Poradíte ? Díky
Camo
Profil
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 *
Reaguje normálně ten selektor je správný.
Camo
Profil
first:
Funguje aj return false aj preventDefault.
chybu máš zrejme v tej podmienke...
Chamurappi
Profil
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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