2010-11-23 51 views
1

こんにちは、私は小さなフォームを検証するためにjQueryの検証スクリプトを使用しています。それは単なる電子メールのサインアップであり、エラーメッセージを表示するためのスペースがあまりありません。私は成功したAJAXの提出で入力の値を "ありがとう"に変更できますが、無効な場合は正しいエラーメッセージを表示するように変更します。 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> 

と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 

これを行う簡単な方法はありますか?私はその単なる単純なフォーム入力以来、大量のコードを必要としません。

ありがとうございます!

+0

を処理するようにコードを調整ねえ、ちょっと待って。 jQueryフォーラムからあなたを知っていますか? :) –

+0

こんにちは、セームは何ですか?ええ、あなたは私をかなり数回助けてくれました。しばらくあなたを見たことがない、あなたと一緒に良いことを願っています。 –

答えて

1

JSONを返すようにしてください。このPHPコード:

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

出力する。このJSON:

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

と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

あなたは、お互いに14秒以内にほぼ同じ(一直線ではない)回答で答えたことを理解しています。私たちが少し違っていることに興味があるのは、この問題を取り上げることです。クール。 – karim79

+2

私たちが同じ結論に達したことを安心してください!私は未定義のチェックがJavaのヌルポインタとしてJSで自然になってきたことを発見しました。 – Andy

+0

@Andy変数が 'undefined'グローバルプロパティと比較することによって' undefined'値を持つかどうかを確実に確認することはできません。そのプロパティは別の値に変更できます。何かに 'undefined'という値があるかどうかを確実にテストするには、' typeof data!== "undefined" 'を実行する必要があります。 –

0

、クライアントに戻すようなものJSONを送信:

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

をし、クライアント上で、「JSON」に$アヤックスのdataTypeオプションを設定し、返されたオブジェクトのプロパティにアクセス:

success: function(json) { 
      if (json.status == "error") { 
       $("#e").val(json.message); 
      } else { 
       $("#e").val('Thank You'); 
      } 
     } 
関連する問題