2017-03-01 101 views
0

我有一個頁面,它帶有「重新加載」按鈕區域。小部件包含textareas和單選按鈕。當我點擊重新加載按鈕時,我試圖設置textarea的文本和選擇單選按鈕。jquery - 使用ajax設置單選按鈕

我現在的代碼是在第一次點擊重新加載按鈕。 textarea和單選按鈕可以用測試值正確設置。

然後,我輸入textarea並更改它的文本,並選擇一個不同的單選按鈕值。當我點擊重新加載按鈕時,textarea和單選按鈕應該重新加載它們的測試值。

但是,只有textarea的值正在重新加載。單選按鈕的選擇不會返回到測試選擇。爲什麼這隻在我第一次點擊重載按鈕時才起作用?

這裏是我的代碼:

$('.refreshTextandRadio').click(function() { 
    var itemName_Text = $(this).attr('reloadName_Text'); 
    var itemName_Radio = $(this).attr('reloadName_Radio'); 
    var evalID = $(this).attr('evalID'); 
    $.ajax({ 
     type: "POST", 
     url: "JDFormAJAX_Reload.asp", 
     data: 'itemName_Text=' + itemName_Text + '&evalID=' + evalID, 
     success: function (msg) { 
      $("textarea#" + itemName_Text).val(msg); 
     } 
    }) 

    $.ajax({ 
     type: "POST", 
     url: "JDFormAJAX_Reload.asp", 
     data: 'itemName_Radio=' + itemName_Radio + '&evalID=' + evalID, 
     success: function (msg) { 
      $('input[name="' + itemName_Radio + '"][value="' + msg + '"]').attr('checked', true); 
     } 
    }) 

}); 

的ajaxURL頁面只是簡單地返回測試值,實在不夠有關,包括在這裏。有誰知道爲什麼這段代碼在第一次點擊時設置了這兩個值,但只恢復了textarea而不是下面點擊的單選按鈕?

+0

你爲什麼要對同一個URL執行兩個同時發生的Ajax請求?爲什麼需要使用Ajax請求將表單重置爲默認值? –

回答

1

對於動態生成的內容,您應該附上您的事件處理程序是不是一個HTML元素(重新)使用的Ajax,而不是元素正被阿賈克斯再生(在你的情況下產生的,您的按鈕與

所以.refreshTextandRadio類,你應該點擊事件附加到下一個更高的(父)是不受你的Ajax元素。爲了方便說明,我將使用document,這肯定比你的任何按鈕高,並附上您的點擊處理程序。

因此您的原始代碼:

$('.refreshTextandRadio').click(function() { 
    //your actions 
}); 

可以重新寫爲:

$(document).on('click','.refreshTextandRadio',function(){ 
    //your actions 
}); 

當然,你要使用較低的父元素(不受阿賈克斯,如上所述),使你的代碼更有效。

希望這會有所幫助!

+1

+1,這是正確的做法。對於那些有興趣的人來說,這就是所謂的「事件代表團」,而jQuery團隊已經發布了一個很好的如何在https://learn.jquery.com/events/event-delegation/ –

+0

@Noel頁面獲得幫助,謝謝! – Cineno28

+0

@Noel,哎呀,我的意思是「很好的幫助」,再次感謝! – Cineno28