Chosen: .trigger("chosen:updated") 不适合选择我提供的选项

创建于 2016-10-18  ·  7评论  ·  资料来源: harvesthq/chosen

当我尝试通过 ajax 重新选择 dirrert 值时
函数第一次做正确的事
两次或更多次后,我更改了 num1 选择选项
另一个 num2 select 应该通过 select something else option val 更新
但不能选择我需要选择的所有选项或根本没有选择

预期行为

告诉我们应该发生什么。
当我改变一个选择元素时
选择 2 需要选择的其他选项基本我通过 ajax 获得的选项

实际行为

告诉我们会发生什么。

环境

  • 选择版本:1.6.2
  • jQuery 或原型版本
  • 浏览器和版本:chrome 54.0.2840.59 m(64 位)
  • 操作系统和版本:WIN7 SP1 64BIT






做一些事情{
$("#one option[value=1]').attr('selected', true);
$("#one option[value=3]').attr('selected', true);
}
$("#one").val(1).trigger("chosen:updated");

那么也许我有时以后什么都没有选择???
我不知道我该怎么做,它可以选择我需要的正确选项吗?

Awaiting Reply

最有用的评论

嗨,空行,
你的问题可以这样解决。
你在做什么:
$("#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("选择:更新");

触发更新时不要给出任何值;

所有7条评论

对不起我可怜的英语 :sob:

如果我理解正确,您使用 ajax 请求向选择添加新选项,然后触发chosen:updated以使选择反映更改?

请设置一个小提琴来演示问题,然后我们可以确定这是一个错误还是只是您的实现问题。

感谢代表这个

不喜欢..不刷新选项列表
选项列表完全相同
但价值并非如此
每次我想更改触发选择的值时更新
当我第一次选择项目的价值是正确的
但稍后会出问题
我无法获得 select elment 的正确值....
image
image
当第一次加载功能正确时,只需要选择一个选项
image
image

然后再一次
image

应该是这样的
Uploading image.png…

https://jsfiddle.net/4jtsdnt7/ someof

嗨,空行,
你的问题可以这样解决。
你在做什么:
$("#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你是最棒的! :) 抱歉反应迟了,我还有其他正在运行的项目。 但是您的解决方案只是做到了它应该做的。 非常感谢! :)

此页面是否有帮助?
0 / 5 - 0 等级