当我尝试通过 ajax 重新选择 dirrert 值时
函数第一次做正确的事
两次或更多次后,我更改了 num1 选择选项
另一个 num2 select 应该通过 select something else option val 更新
但不能选择我需要选择的所有选项或根本没有选择
告诉我们应该发生什么。
当我改变一个选择元素时
选择 2 需要选择的其他选项基本我通过 ajax 获得的选项
告诉我们会发生什么。
做一些事情{
$("#one option[value=1]').attr('selected', true);
}
$("#one").val(1).trigger("chosen:updated");
一 val 1
然后
做一些事情{
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
}
$("#one").val(1).trigger("chosen:updated");
那么也许我有时以后什么都没有选择???
我不知道我该怎么做,它可以选择我需要的正确选项吗?
对不起我可怜的英语 :sob:
如果我理解正确,您使用 ajax 请求向选择添加新选项,然后触发chosen:updated
以使选择反映更改?
请设置一个小提琴来演示问题,然后我们可以确定这是一个错误还是只是您的实现问题。
嗨,空行,
你的问题可以这样解决。
你在做什么:
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").val(1).trigger("chosen:updated");
需要做什么
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").trigger("选择:更新");
触发更新时不要给出任何值;
在通过 JS 更新多选选项的选择状态,然后尝试更新 Chosen 以显示选择后,我遇到了同样的问题。 我制作了一个演示这种行为的小提琴:
https://jsfiddle.net/5wbzxg27/
有3个按钮:
即使您多次按下同一个按钮(并更新它),每个选项也只会在“选择”框中显示一次。 脚本运行正常,原始选择选项的选中状态更改正常,但选择仅在第一次显示选项。
希望这可以帮助。
@cinemazealot尝试以下代码:
$("#mySelect").chosen({
placeholder_text_multiple: 'Something',
});
$('button#all').on('click', function() {
$('#mySelect option').attr('selected', false); // selects all
var options = [];
for (var i=0; i < $('#mySelect option').length; i++){
options.push($('#mySelect option')[i].value);
};
$('#mySelect').val(options);
$("#mySelect").trigger("chosen:updated"); // updates chosen
return false; // returns false not to post the surrounding form
});
$('button#first').on('click', function() {
$('#mySelect option').attr('selected', false); // clears all
var options = [];
for (var i=0; i < $('#mySelect optgroup[label="first"] option').length; i++){
options.push($('#mySelect optgroup[label="first"] option')[i].value);
};
$('#mySelect').val(options);
$("#mySelect").trigger("chosen:updated"); // updates chosen
return false; // returns false not to post the surrounding form
});
$('button#second').on('click', function() {
$('#mySelect option').attr('selected', false); // clears all
var options = [];
for (var i=0; i < $('#mySelect optgroup[label="second"] option').length; i++){
options.push($('#mySelect optgroup[label="second"] option')[i].value);
};
$('#mySelect').val(options);
$("#mySelect").trigger("chosen:updated"); // updates chosen
return false; // returns false not to post the surrounding form
});
它可能看起来笨重而大,但它似乎有效
@pashaUSA你是最棒的! :) 抱歉反应迟了,我还有其他正在运行的项目。 但是您的解决方案只是做到了它应该做的。 非常感谢! :)
最有用的评论
嗨,空行,
你的问题可以这样解决。
你在做什么:
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").val(1).trigger("chosen:updated");
需要做什么
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
$("#one").trigger("选择:更新");
触发更新时不要给出任何值;