jquery - 使用ajax设置单选按钮

问题描述:

我有一个页面,它带有“重新加载”按钮区域。小部件包含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请求将表单重置为默认值? –

对于动态生成的内容,您应该附上您的事件处理程序是不是一个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