Jquery 使用ajax在名称为“[]”的多个选择框中选择多个选项
我试图从从ajax接收的数据中动态地选择多个选择框中的选项 HTMLJquery 使用ajax在名称为“[]”的多个选择框中选择多个选项,jquery,drop-down-menu,Jquery,Drop Down Menu,我试图从从ajax接收的数据中动态地选择多个选择框中的选项 HTML 但它不起作用。它不起作用,因为jQuery认为sbox[]是ID选择器sbox,其属性选择器[]为空,无效 您可以转义方括号,使选择器变为sbox\[\]。但是在你的身份证中,方括号是不需要的;只需将其命名为id=sbox并选择sbox。方括号仅在name属性中是必要的,用于将select指定为值数组。在每个循环中使用值,而不是v,就像在声明中命名参数一样 $.each(splitText, function(k,v)
但它不起作用。它不起作用,因为jQuery认为sbox[]是ID选择器sbox,其属性选择器[]为空,无效 您可以转义方括号,使选择器变为sbox\[\]。但是在你的身份证中,方括号是不需要的;只需将其命名为id=sbox并选择sbox。方括号仅在name属性中是必要的,用于将select指定为值数组。在每个循环中使用值,而不是v,就像在声明中命名参数一样
$.each(splitText, function(k,v) {
$("#sbox[]").children("option[value="+v+"]").attr("selected","selected");
});
如果这是您使用的确切代码,则值以$为单位。每个值都未定义。您正在函数中使用v标识符。应该是
$("#sbox[]").children("option[value="+v+"]").attr("selected","selected");
您应该更改id。从w3开始,不允许使用[]符号
指定元素的唯一id。命名规则:
必须以字母a-Z或a-Z开头
可后跟:字母A-Za-z,
数字0-9,连字符-,
下划线_,冒号:,和
时期。价值观是
区分大小写
如果你换了身份证就容易多了 如果您绝对必须这样做,则必须转义括号,因为它们在选择器语法中使用
change $("#sbox[]")
to $("#sbox\[\]")
试一试
这里有几个可能的问题,请尝试以下方法:
$.post(
"test.php",
{
action: "test"
},
function(data) {
//data received is in the format of "2,3"
var splitText = data.split(",");
var select = $('[id="sbox[]"]').get(0);
$.each(splitText, function(k,v) {
$.each(select.options, function(i, option) {
if(option.value == v)
option.selected = true;
else
option.selected = false;
});
});
}
);
第一件事是,当id是字母数字时,id选择器工作得很好,并且u也是允许的。因此,要在id中使用[]子字符串,您需要使用属性选择器来定位它。或者,如果它是唯一以sbox开头的id,您可以尝试以下操作:$'[id^=sbox]'
另一个可能需要修复的项目是设置所选属性。我不确定它是否如您所期望的那样工作,但是如上所示寻址选项DOM对象应该可以
最后一个是次要的修正——您在每个循环迭代中定位元素,很可能您希望在循环开始之前定位一次
希望这有帮助 嗯,通常不需要,但表单是通过序列化字段提交的,所以要将其作为数组获取,我需要使用括号。@mrN:这是名称属性,而不是id。@BoltClock,如果我不使用id中的括号,可以吗。@mrN:这不是我说的吗?再看一遍我的答案,我对它进行了一些编辑,以便详细说明。@BoltClock,不,我只是不认为是id引起了它。但是谢谢,它成功了。你介意更新你的答案吗?我想接受它。写+v+而不是+value+已经说了两遍了,这是一个打字错误,我把它修好了。哦。。。哎呀,那是个打字错误,所以
change $("#sbox[]")
to $("#sbox\[\]")
$.post(
url: "test.php",
function(data) {
//data received is in the format of "2,3"
splitText = data.split(",");
$.each(splitText, function(k,v) {
$("#sbox\[\]").children("option[value="+v+"]").attr("selected","selected");
});
}
);
$.post(
"test.php",
{
action: "test"
},
function(data) {
//data received is in the format of "2,3"
var splitText = data.split(",");
var select = $('[id="sbox[]"]').get(0);
$.each(splitText, function(k,v) {
$.each(select.options, function(i, option) {
if(option.value == v)
option.selected = true;
else
option.selected = false;
});
});
}
);