我的脑海里正在寻找原因并解决我的问题。我知道我错过了一些东西,但我不知道它在哪里。我的目标是在下拉列表更改后进行ajax调用,然后在select multiple中附加选项。
这就是我所拥有的:
$(document).ready( function(){
$('#myselect').append("<option value='test1' selected>Test1</option>"); //this works
$("#mydropdown").on('change', function(){
$.ajax({
type: "POST",
url: "somepage.php",
data: $("#someForm").serialize(),
success: function(msg)
{
alert("Hello World"); //this is triggered
//below line of code does not work
$('#myselect').append("<option value='test3' selected>Tes3</option>");
}
});
});
});
为什么会这样?
答案 0 :(得分:0)
所以我找到了解决问题的方法。我在select周围放了一个名为theDiv的特定ID的div,并像往常一样初始化它。然后在我的AJAX请求中我把
$( "#theDiv" ).empty(); //empty the diev so that select will be removed
//append select
$("#theDiv").append('<select multiple="multiple" id="myselect" name="myselect[]"><option>Some option</option></select>');
InitalizeMultiSelect(); //re-initialize the multiSelect
现在它对我来说工作正常。可能效率不高但似乎我没有找到任何方法去取消初始化multiSelect,所以我想这对我来说是最好的解决方案。
感谢您的所有时间和帮助。
答案 1 :(得分:-1)
代码
$('#myselect').append("<option value='test3' selected>Tes3</option>");
对我来说似乎没问题。但是比如检查我给你的两个建议
1)首先尝试这个
更改"<option value='test3' selected>Tes3</option>";
到'<option value="test3" selected>Tes3</option>'
2)同时尝试使用selected='selected'
可能也会导致问题
我误解了myselect和mydropdown是相同的下拉列表。
抱歉,无论如何你的代码都没事。
do one thing, try to remove the class of the #myselect(if any class is there) to see if your code works