这就是问题所在:我在页面加载时动态创建了一个 X 单选按钮列表,一旦创建并显示了列表,我只希望用户一次能够选择 1 个(按照正常的单选按钮组)。但是,用户可以选择多个选项,就好像单选按钮单独运行而不是作为一组单选按钮运行一样。
这是我在准备好文档时调用的代码:
// On document ready...
$(document).ready(function() {
// add click events to any inputs to the radio btn div, setup jQuery UI radio buttonset...
$("#radioX").on("click", "input", displayProductDetails).buttonset();
// get all the products
$.get(
"php/getProducts.php",
function(responseData){
// set the products array
products = responseData;
// setup the radio buttons for the products returned
setupProductRadioButtons(products);
},
"json"
);
});
这是创建我的单选按钮的代码:
// method used to setup the list of selectable products based on the list returned
// from the server
function setupProductRadioButtons(products) {
// create a radio button for each element in the products array
jQuery.each(products, function(index) {
// get the product from the array using the current index
var product = products[index];
// create a new radio button using the product name
createNewRadioButton(
'#radioX',
product.Id,
product.Id,
product.Name,
index
);
});
// refresh the button set - jQuery UI
$("#radioX").buttonset("refresh");
}
// function used to create a new radio button
function createNewRadioButton(
selector,
newRadioBtnId,
newRadioBtnName,
newRadioBtnText,
newRadioBtnValue){
// create a new radio button using supplied parameters
var newRadioBtn = $('<input />').attr({
type: "radio", id: newRadioBtnId, name: newRadioBtnName, value: newRadioBtnValue
});
// create a new label and append the new radio button
var newLabel = $('<label />').attr('for', newRadioBtnId).text(newRadioBtnText);
// add the input then the label (and forget about the <br/>
$(selector)
.append(newRadioBtn) // add the radio button
.append(newLabel) // add the label
.append("<br>"); // add a line break to separate the buttons
}
这是 HTML(减去动态创建的单选按钮):
<div id="leftMenu">
<form>
<div id="radioX">
</div>
</form>
</div>
有任何想法吗?如果我手动设置大量 jQuery UI 单选按钮,一切都按我的预期工作,我选择 1 个选项,所有其他选项都被取消选择,我选择一个不同的选项,所有其他选项都被取消选择等等 。但是上面的示例让我选择多个.
这是我期望发生的屏幕截图(默认选择中间选项,然后我选择当前突出显示的选项,中间选项自动取消突出显示):预期行为
这是实际发生的屏幕截图(使用我动态创建的单选按钮):实际行为