2013-03-12 17 views
6

私はjQuery Validate pluginを使用してフォームに電子メールフィールドを検証し、別のユーザーが電子メールをまだ取得していないことを確認するajaxリクエストを行います。私は、フォーム上の「提出」ヒットするたびに、それは最初に確認メールが取られていないようにするAJAX要求を行いますし、それは意志、しかしValidateはajaxチェックでフォームを送信しません

//make sure email field is on form before adding rule 
if ($(".unique_email").is("*")) { 
    //remote validation 
    $(".unique_email").rules("add", { 
     remote: "http://test.nethop.com/test.cgi", 
     messages: { 
      remote: "This email is already in use" 
     } 
    }); 
} 

:私はこのようなルールを追加することによってそう電子メールが大丈夫と妥当性を確認しても送信しないでください。あなたはもう一度提出をヒットしなければならないし、それは提出されます。誰がなぜこれが分かっていますか?

問題を示すjsfiddleを設定しました。クローム開発ツールや火元爆弾を使用している場合は、Ajaxリクエストが行われていて、trueを返していますが、まだ送信していないことがわかります。

HTML

<form id="listing" method="post"> 
    <ul> 
     <li> 
      <label for="username">Email *</label> 
      <input type="text" name="username" id="username" autocomplete="off" 
      class="email required unique_email" value="[email protected]" /> 
     </li> 
     <li> 
      <input type="submit" name="submit" id="submit" class="btn" value="Save" 
      /> 
     </li> 
    </ul> 
</form> 

フルスクリプト:

$(document).ready(function() { 
    var validator = $("form").validate({ 
     onkeyup: false, 
     onblur: true, 
    }); 

    if ($(".unique_email").is("*")) { 
     //remote validation 
     $(".unique_email").rules("add", { 
      remote: "http://test.nethop.com/test.cgi", 
      messages: { 
       remote: "This email is already in use" 
      } 
     }); 
    } 
}); 
+1

まだ1良い質問に対してもがダウン/死亡またはリンク腐朽行くフィドルの場合、完全性についてフィドルからの完全なコードを追加しました。そうすれば、この問題は、今後も同様の問題を抱えるユーザーにとって有益です。特に、HTMLの名前/ IDが問題/ソリューションの一部であることがわかりました。 – Nope

+0

@FrançoisWahl:合意しました、私は私の投票を取り消すことができればと思っています。これは問題をよりよく説明するはるかに簡潔な質問です。 –

+0

@AndrewWhitaker:質問の質に関係なく、私は重複して投票しました。したがって、それはかなり共通の問題に対処する良い質問です。私はこの質問が良質であることが好きですが、それでもまだ悲しいことに重複しています。重複した質問は削除されません。私が知っている限りでは、Googleの – Nope

答えて

5

さて、この1つは種の奇妙なので、負担私と一緒です。

名前/ idがsubmitinputという事実が問題の原因です。私はだと思います。これは、フードの下で、jQueryがform.submitを呼び出しているからです。あなたの場合、form.submitはフォーム要素なので、何もしません。

submitボタンの名前を変更しても、問題なく動作します。

例:重複したけれどもhttp://jsfiddle.net/42TK4/7/

+0

うわー、素晴らしい解決策を見つけ出すには、この質問を良い品質の質問にして、より多くの回答が投稿されるのを防ぐだけです。どのようにそれを追跡したのですか? – srchulo

+0

@srchulo:ありがとうございました。私は運が良かったです...私は送信ボタンに気づき、フォーム要素に名前でアクセスできることを知っています。 –

+0

大きなキャッチ! +1 –

関連する問題