2012-04-13 15 views
1

私はcaptchaを使用して私のサイトで連絡フォームを開発しています。例はここで見ることができます。ユーザーは、キャプチャイメージをリロードする必要がある場合JQuery ajaxコールはすべてのフォームフィールドをリセットします

contact form

数年前、私が持っていた唯一の選択肢は、その後、フォーム全体をリロードすることでした。

私はjqueryを使い始めて以来、この方法をイメージをリフレッシュするだけの方法に置き換える時が来ました。

だから私はこの小さな断片で書きました:

$(document).ready(function() { 
    $('#creload').click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "/en/KDpg_Captcha.html", 
      async: true, 
      success: function(ret) { 
       $('#cimg').attr('src', ret); 
      } 
     }); 
    }); 
});​ 

#creloadはリロードを要求するリンクのIDで、#cimgは、実際の画像のIDです。

私が発見したのは、他のフォームフィールドを塗りつぶしてリロードを要求すると、他のフィールドがリセットされるということです。これは望む結果ではありません。

どうすればよいですか?

答えて

2

#creloadがリンクの場合、href属性に何が入っているのかを示すデフォルトのアクションが行われないようにする必要があります。 e.preventDefault()を追加するとこれが停止します。引数として電子を追加することを忘れないでください:あなたは、以下のリンクをクリックすると

$('#creload').click(function(e) { 
    e.preventDefault(); 
    // ... 
+1

OPへの注意:イベントオブジェクトを'e 'に割り当てるには、 'function()'を 'function(e)'に変更することを忘れないでください。 – Blazemonger

2

<a href id="creload">here</a> 

現在のページがhrefとして解釈され、ページがリロードされます。

あなたは単にリンクを変更することで、あなたのclick TJで説明するようハンドラ、またはそれ以上にfunction(e)e.preventDefault()を追加することで、プログラムでこれを防ぐことができます:あなたはへ#リンクをしたくない場合は

<a href="#" id="creload">here</a> 

または、

<a href="javascript:" id="creload">here</a> 
+1

'# 'を押すとリンクがページの先頭に移動します。 –

+0

@ JamesMontagneこの場合、リンクもページの上部にあるので、これは重要ではありません。しかし、将来の読者のために、私の答えはとにかく更新します。 – Blazemonger

+0

さて、私は今非常に不満です。最初に、私は、私のやりたいことがイメージのsrcではなく実際のイメージを変更することであったという点で、私のajax呼び出しが間違っていることに気付きました。私はすべてのajaxを削除し、それを単に –

関連する問題