【问题标题】:jquery option select not working in chromejquery选项选择在chrome中不起作用
【发布时间】:2013-02-18 04:01:06
【问题描述】:

在获取需要选择的选项值后,我正在尝试通过 jquery 自动选择选项。但是它在 Chrome 中不起作用。它在 Firefox 和 IE 9 中工作。为什么会这样?函数 fill 是填充值的函数。 (函数res,只重置函数fill填充的值,对本题不重要)

function fill(thisValue) {
    $('#inputString').val(thisValue);
    $.post("get.php?op=category", {queryString: ""+thisValue+""}, function(data){
            if(data.length >0) {
                $("#mymenu option[value='"+data+"']").attr('selected', 'selected');
                $('#mymenu').attr("disabled","disabled");
            }
        });
    $.post("get.php?op=name", {queryString: ""+thisValue+""}, function(data){
            if(data.length >0) {
                $('#nameString').val(data);
                $('#nameString').attr("disabled","disabled");
            }
        });
    $.post("get.php?op=author", {queryString: ""+thisValue+""}, function(data){
            if(data.length >0) {
                $('#authorString').val(data);
                $('#authorString').attr("disabled","disabled");                 
            }
        });
    $.post("get.php?op=publisher", {queryString: ""+thisValue+""}, function(data){
            if(data.length >0) {
                $('#publisherString').val(data);
                $('#publisherString').attr("disabled","disabled");
            }
        });


    setTimeout("$('#suggestions').hide();", 200);
}

function res(inputString) {
$('#publisherString').attr("disabled", false);
$('#publisherString').val('');
$('#nameString').attr("disabled",false);
$('#nameString').val('');
$('#authorString').attr("disabled",false);
$('#authorString').val('');
$('#mymenu').attr("disabled",false);
$('#mymenu option').attr('selected', false);
}

【问题讨论】:

  • 尝试将attr('selected', 'selected')改为prop('selected', true)

标签: jquery google-chrome select option


【解决方案1】:

您可以使用val() 设置select 元素的值。

改变

$("#mymenu option[value='"+data+"']").attr('selected', 'selected');

$("#mymenu").val(data);

Demo Fiddle

另一种解决方案是使用prop()attr()方法用于设置元素的属性值不设置属性。

$('#mymenu option[value="5"]').prop('selected', true)

您可以阅读有关attr vs prop 以及jQuery 1.6 release note 的更多信息

Demo Fiddle

【讨论】:

    【解决方案2】:

    当您在下面的语句中使用带有拼写错误的数据时,看起来 val 不起作用。我花了一段时间才注意到。

    $("#mymenu").val(data);
    

    【讨论】:

      【解决方案3】:

      这是我刚刚注意到的关于您在选项标签中设置的名称的一些内容。我将以我的代码为例。你看到下面的蓝色和黑色了吗?

      <option value="b">Blue</option>
      <option value="k">Black</option>
      

      假设当前选择了蓝色。如果您按键盘上的字母“B”(区分大小写无关紧要),无论如何它都不会改变。即使您有一个应该设置值的 onkeydown 事件也是如此,例如:

      $(function () {
          // Set the value on key down
          $("select[id=stoneColor1]").on("keydown", function(e) {
      
              var key = String.fromCharCode(e.keyCode);
              for (var i=0; i<stoneColorOptions.length; i++) {
                  if (stoneColorOptions[i].keyPress == key) {
                      $("#stoneColor1").val(key.toLowerCase());
                      break;
                  }
              }
          });
      });
      

      回想一下,如果我有,上面的代码将不起作用

      <option value="b">Blue</option>
      <option value="k">Black</option>
      

      但是,当我有它时它确实有效

      <option value="b">(B) Blue</option>
      <option value="k">(K) Black</option>
      

      是的,故事的寓意:看来您还必须考虑选项名称中的第一个字母。

      【讨论】:

      • 这是一个有趣的观察,但我认为这与原始问题无关。
      猜你喜欢
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      相关资源
      最近更新 更多