2012-01-10 5 views
1

テキスト入力の値をとり、それをMySQLデータベースに格納するjQueryがあります。しかし、jQueryを実行すると、ページがリフレッシュされ、フォームの変数がURLにGET変数として表示されます。しかし、変数のどれもがGETではありません。理想的には、ページをリフレッシュしないようにしたいと思います。jQuery POSTページを更新する

jQueryの:(PHPからエコー)

$('.commentBox').keypress(function(e) { 

    if(e.which == 13) { 
     if ($.trim($(this).val()) == ""){ 
      $('#nocomment').modal('show'); 
     } 
     else { 
      var form = $(this).siblings('.commentForm'); 
      var commentbox = $(this).val(); 

      $.ajax({ 
       type: "POST", 
       url: "../comment", 
       data: form.serialize(), 
       success: function(){ 
        commentbox.val(''); 
        form.siblings('.commentContainer').append(response); 
       } 
      }); 
     } 
    } 

}); 

HTML:

<form class='commentForm'> 
    <input type='hidden' name='record_id' value='$answerid[$f]' /> 
    <input type='hidden' name='question_id' value='$q' />"; 
    <input type='text' class='commentBox' placeholder='...comment' name='comment' autocomplete='off' />"; 
</form> 

答えて

2

あなたはfalseを返すか、デフォルトを防ぐため、提出からフォームを停止するかのいずれかがあります。

$('.commentBox').keypress(function(e) 
{ 
    if(e.which == 13) 
    { 
     e.preventDefault(); // <-- This will stop the form from submitting. 

     if ($.trim($(this).val()) == "") 
     { 
      $('#nocomment').modal('show'); 
     } 
     else 
     { 
      var form = $(this).closest('.commentForm'); 
      var commentbox = $(this).val(); 
      $.ajax({ 
       type: "POST", 
       url: "../comment", 
       data: form.serialize(), 
       success: function(){ 
        commentbox.val(''); 
        form.siblings('.commentContainer').append(response); 
       } 
      }); 
     } 
    } 
}); 
+1

これを実現するためにはfalseを返す使用しないでください。イベントのバブリングやキャプチャが中断され、他のjavascriptがあなたの要素とやり取りすることが困難になることがあります。 – Nate

+0

@josephどこに置いたらいいですか?私はkeypress関数の直後に試してみましたが、テキストボックスには何も入力しませんでした。私はそれを 'else {'と '私は入力することができます入力した後に移動しましたが、何も起こらなかった – kirby

+0

@ user802370 - 私は私の答えにコードを追加しました。 –

0

GETによるフォーム提出であるEnterキーを押すと、デフォルトのアクションが行われないようにする必要があります。

e.preventDefault();

$('.commentBox').keypress(function(e) { 

    if(e.which === 13) { 

     // Prevent the default only when it's the enter key 
     e.preventDefault(); 

     if ($.trim($(this).val()) === ''){ 
      $('#nocomment').modal('show'); 
     } 
     else { 
      var form = $(this).siblings('.commentForm'); 
      var commentbox = $(this).val(); 

      $.ajax({ 
       type: "POST", 
       url: "../comment", 
       data: form.serialize(), 
       success: function(){ 
        commentbox.val('' ; 
        form.siblings('.commentContainer').append(response); 
       } 
      }); 
     } 
    } 

}); 
+0

このコードを置く場所 – kirby

+0

答えを更新してコードを挿入する場所を示します。 – Nate

+0

私の最後のコメントを参照してくださいjosephs答え – kirby

関連する問題