我尝试将一个选择框项目复制或移动到另一个选择框。问题是当一个或多个项目从第一个框移动到第二个框时,应该选择它。但它没有用。
我的代码
function SelectMoveRows(SS1,SS2)
{
var SelID='';
var SelText='';
var SelText2='';
// Move rows from SS1 to SS2 from bottom to top
for (i=SS1.options.length - 1; i>=0; i--)
{
if (SS1.options[i].selected == true)
{
SelID=SS1.options[i].value;
SelText=SS1.options[i].text;
SelText2=SS1.options[i].attr("selected");
var newRow = new Option(SelText,SelID,SelText2);
SS2.options[SS2.length]=newRow;
SS1.options[i]=null;
}
}
SelectSort(SS2);
}
然后我用
SelText2=SS1.options[i].attr("selected");
但它没有用。如果我使用:
SelText2=SS1.options[i].select=true;
然后选项如下:
<option value="3" selected="">Delivery</option>
但它应该是:
<option value="3" selected="selected">Delivery</option>
答案 0 :(得分:0)
在选项标签中,所选属性不需要值:
<option value="3" selected>Delivery</option>
与
相同<option value="3" selected="selected">Delivery</option>
在这里查看:
答案 1 :(得分:0)
你应该使用.prop not .attr
e.g。
SelText2=SS1.options[i].prop("selected", true);
更新我会按照以下方式执行此操作;
<select id="select1">
<option value="1">Option1</option>
<option value="2">Option2</option>
</select>
<select id="select2">
<option value="3">Option3</option>
</select>
$("#select1").change(function(){
$("#select1 option:selected").each(function() {
var option = $(this);
$("#select2").append(option);
$("#select1").remove(option);
});
});
选择此选项后,这会将所选选项从选择1移至选择2。
答案 2 :(得分:0)
正如David Thomas在评论中指出的那样,.attr()
不是选择元素的有效方法;这是一个jQuery对象的方法,你没有。
您可以将true
作为参数传递给Option
构造函数,第三个参数实际上是defaultSelected
属性,而第四个参数是selected
属性
for (var i = SS1.options.length - 1; i >= 0; i--) {
var option = SS1.options[i];
if (option.selected) {
SS2.add(new Option(option.text, option.value, false, true));
SS1.remove(i);
}
}
您可以使用option.selected
代替true
,但由于if语句,您知道option.selected
始终为true
。