【问题标题】:jQuery .val() on option in ie8?jQuery .val() 在 ie8 中的选项?
【发布时间】:2013-07-16 20:38:48
【问题描述】:

我正在向选择列表动态添加一个新选项,而我要做的就是选择它,因为它来自用户输入。奇怪的是,他们想要刚刚添加的新选项。

var msg = "an ajax return from a modal input that works";
$("#myselect").append( $('<option></option>').val(msg).html(msg) );

该项目确实被添加到选择中,但它没有被选中。

我只有 ie8 可以在 Internet 网络上进行测试和遵守...

这是浏览器的错误,还是我的代码错误?

我的理解是 .val() 应该选择它。

【问题讨论】:

  • 在添加option 后,您是否尝试在select 上而不是在选项元素上调用val()?编辑:adaneo 的建议。
  • 感谢弗洛里安,这似乎是我在这里错过的关键问题。但我仍然没有一个可行的解决方案。
  • 好的,现在我愿意。 $("#myselect").append($('').val(msg).html(msg)).val(msg);

标签: jquery internet-explorer-8 options


【解决方案1】:

更改选项值不会将选择设置为该值,您必须设置选择值才能做到这一点

var msg = "an ajax return from a modal input that works";

$("#myselect").append( $('<option>' + msg + '</option>') ).val(msg);

或者您可以设置 selected 属性,但您必须确保没有选择其他选项:

var option = $('<option />', {text:msg, selected:'selected'});
$("#myselect").find('option').prop('selected', false).end().append( option );

【讨论】:

  • 使用第一种方法,这更接近,但似乎不起作用。它添加选项,然后在新创建的选项后选择一个空白。我看到将 .val(msg) 添加到选项中的缺陷,而不是现在的选择。
  • 使用 dom explorer,这就是为什么...(我输入 77) 它有两个选项,但一个没有显示文本。
  • 然后代码由于其他原因运行了两次,或者你循环了两次具有相同值的东西?
  • 更正,这确实有效。我在那里有另一个糟糕的代码片段。谢谢!
【解决方案2】:

您的代码错误。

您创建选项,但您从不选择它。

附加选项后,您可以在选择元素上调用.val() 来设置选择的选项。

在选项上调用.val() 会设置选项的 – 选择该选项时选择的值。

【讨论】:

  • 我看到了将 .val(msg) 添加到选项而不是选择的缺陷。
【解决方案3】:

您也可以$("#myselect:last")选择最后一个选项。

【讨论】:

    【解决方案4】:

    类似这样的:

    var msg = "an ajax return from a modal input that works";
    $("#myselect").append('<option value="'+msg+'" selected="selected">'+msg+'</option>');
    

    工作小提琴:http://jsfiddle.net/hieuh25/aBBRy/1/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 2011-06-27
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 2011-08-03
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多