2010-11-23 13 views
1

Hi Im mit jQuery Validierung (genial) Skript, um ein kleines Formular zu validieren. Es ist nur eine E-Mail-Anmeldung und es ist nicht viel Platz um die Fehlermeldung anzuzeigen. Ich kann den Wert der Eingabe bei erfolgreicher AJAX-Übermittlung in "Thank You" ändern, möchte sie jedoch ändern, um die korrekte Fehlermeldung anzuzeigen, wenn sie ungültig ist.Ändern Sie den Wert der Texteingabe, wenn ungültig

HTML

<div id="emailBox"> 
    <form id="email" action="/PHP/email-cURL.php" method="post"> 
    <input type="text" id="e" name="email1" value="Email Sign Up" class="swap_value signup" /> 
    <input type="submit" value="" id="signUp" /> 
    </form> 
</div> 

und die JS

$("#email").validate ({ 
     errorElement: "//what do I wrap error msg in to populate value?", 
      errorPlacement: function(error, element) { 
       error.appendTo(element.parent("div")); 
      }, 

      submitHandler: function(form) { 
      var dataString = $(form).serialize(); 
       $.ajax({ 
        type: $(form).attr('method'), 
        url: form.action, 
        data: dataString, 
        clearForm: true, 
        success: function(data) { 
         if (data=="Error") { 
          $("#e").val('Error'); 
         } else { 
          $("#e").val('Thank You'); 
          } 
        } 
       }); 
      return false; 

      }, 
         //rules, 
         //messages 

Gibt es eine einfache Möglichkeit, dies zu tun? Ich brauche nicht viel Code, da es nur eine einfache Eingabe ist.

Danke!

+0

Hey, warte eine Minute zu behandeln. Kenne ich Sie aus dem jQuery-Forum? :) –

+0

Hey, was ist Sime? Ja, du hast mir ein paar Mal geholfen, ich habe dich schon lange nicht mehr gesehen, hoffentlich ist alles gut mit dir. –

Antwort

1

Versuchen Sie, JSON zurückzugeben. Dieser PHP-Code:

echo json_encode(array('success'=>false,'errorMsg'=>'Failed to set x'); 

gibt dieses JSON:

{"success":false,"errorMsg":"Failed to set x"} 

Und stellen Sie Ihren Code, um die JSON

var dataString = $(form).serialize(); 
      $.ajax({ 
       type: $(form).attr('method'), 
       url: form.action, 
       data: json, 
       clearForm: true, 
       success: function(data) { 
        if (undefined !== data && true === data.success) { 
         $("#e").val('Thank you'); 
        } else { 
         var error = undefined === data.errorMsg ? 'Unknown error' : data.errorMsg; 
         $("#e").val(error);              } 
       } 
+1

Sie wissen, dass wir innerhalb von 14 Sekunden mit fast derselben (nicht einzeiligen) Antwort geantwortet haben. Interessant, wie wir das Problem etwas anders sehen. Cool. – karim79

+2

Beruhigend, dass wir zu demselben Schluss gekommen sind! Ich habe festgestellt, dass die Überprüfung auf undefined in JS so natürlich geworden ist wie in Java Nullzeiger. – Andy

+0

@Andy Beachten Sie, dass Sie nicht zuverlässig überprüfen können, ob eine Variable den Wert "undefined" hat, indem Sie sie mit der globalen Eigenschaft "undefined" vergleichen. Diese Eigenschaft kann in einen anderen Wert geändert werden. Um sicher zu testen, ob etwas den Wert 'undefiniert' hat, müssen Sie folgendes tun: 'typeof data! ==" undefined "'. –

0

Senden JSON zurück an den Client, so etwas wie:

{ "status" : "error", "message" : "Email address already exists" } 

und auf dem Client eingestellt $ Schnipsel des dataType Option 'json', und auf die Eigenschaften des zurückgegebenen Objekts:

success: function(json) { 
      if (json.status == "error") { 
       $("#e").val(json.message); 
      } else { 
       $("#e").val('Thank You'); 
      } 
     } 
Verwandte Themen