2013-07-07 130 views
0

我有一個大表,每個行都有地址和其他演示信息。我已經添加了一個表單並向每一行提交按鈕以保存更新的數據。提交時,a中的數據將填充HTML,並通過ajax發送表單內容。 問題是,它只能使用一次。如果表單已提交,它將發送數據並按預期填充,但表單不會再次發送。下面我有一個骨架模板。我試過用我在這裏看到的各種方式使用live()函數,但我無法讓它工作。Ajax只提交一次

編輯:我怎麼能讓結果div#G1在幾秒鐘後淡出?無法得到那個工作。

相關JS:

$(document).ready(function() { 
    $("#Frm1").submit(function (event) { 
     var values = $(this).serialize(); 
     $.ajax({ 
      url: "savedata.php", 
      type: "post", 
      data: values, 
      success: function (msg) { 
       $("#G1").replaceWith(msg).fadeIn(2000); 
       $('#ty').html('<select name="thanks"><option value="1">Yes</option><option value="0" selected>No</option></select>'); 
      }, 

     }); 

     return false; 
    }); 
}); 

HTML

<table id="maint"> 
<tr> 
    <td><strong><a href="mailto:" title="<p>Address:<br>1417 Apt 38<br>NY<p>Phone:4253455550</p>" id="1_pop">Bpbb BB</a></strong> 
    </td> 
    <td>1</td> 
    <td>Cara JT</td> 
    <td></td> 
    <td> 
     <form id="Frm1"> 
      <input type="hidden" id="id" name="id" value="1"> 
      <input type="hidden" name="type" value="rsvp"> 
      <input type="text" id="gift" name="gift" value="3"> 
    </td> 
    <td id="ty"></td> 
    </td> 
    <td> 
     <input type="submit" id="submit" value="Save Row" /> 
     <div id="G1"></div> 
    </td> 
    <td> 
     </form> 
    </td> 
</tr> 

您的幫助表示讚賞!

+3

'.live()'是早已過時的,並從取出最新版本。查找['.on()'](http://api.jquery.com/on)。 – JJJ

+1

你正在完全取代'#G1'元素。如果使用'.replaceWith',你可能想使用'.text'或'.html'。 – mekwall

+0

謝謝Juhana。這很好,加上preventDefault。我仍然很難讓div淡出。我添加了.html,但是我得到一個錯誤,指出毫秒未定義,指的是淡出()。我試圖用淡出(1600,「慢」)但沒有去。 – user2558042

回答

-1

嘗試更換return falseevent.preventDefault();

編輯 對於認爲這是一個不好回答的人,請閱讀:http://fuelyourcoding.com/jquery-events-stop-misusing-return-false/

+0

您的觀點是有效的,也是一種很好的做法,但它並不回答實際問題。我想這就是爲什麼你被低估了。 – mekwall

+0

他的問題是他的AJAX只提交一次,而你的答案會阻止它提交。你說得對,但你沒有直接回答這個問題......這會做出很好的評論,但這不是對這個具體問題的回答。 – msturdy

+0

mmm,也許我錯了,但是,當由jQuery處理的事件返回false時,這個事件處理程序被刪除,對吧?如果我是正確的,那麼表格只會被冒充一次。 – Aguardientico

相關問題