2013-03-04 9 views
5

選択する必要のあるオプション値を取得した後、jqueryによってselectでオプションを自動選択しようとしています。ただし、Chromeでは動作しません。 FirefoxとIE 9で動作しています。なぜそうですか?関数の塗りつぶしは、値を塗りつぶすものです。 (機能RES、唯一の機能フィルによって満たされた値をリセットし、この質問のために重要ではありません)jqueryオプションの選択がクロムで機能しない

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); 
} 
+0

'attr( 'selected'、 'selected')'を 'prop( 'selected'、true)に変更しようとしました。 –

答えて

9

あなたはselect要素の値を設定するためにval()を使用することができます。

変更

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

Demo Fiddle

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

に別の解決策は、 prop()を使用することです。 attr()メソッドは、プロパティを設定しないように要素の属性値を設定するために使用されます。

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

あなたはattr vs propだけでなく、jQuery 1.6 release note

Demo Fiddle

0

あなたはvalが動作していないように見える以下の文にタイプミスしたデータを使用についての詳細を読むことができます。気づくまで私を少し時間がかかりました。

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

ここでは、オプションタグで設定した名前について気付いたことがあります。コードを例として使用します。下の青と黒がどこにあるのか分かりますか?

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

青が現在選択されているとします。キーボードで文字 'B'を押すと(大文字と小文字の区別は関係ありません)、何に関係なく変更されません。私はそれは、私がしかし

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

を持っている場合、上記のコードは動作しませんと述べ

$(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; 
      } 
     } 
    }); 
}); 

リコール:これは、次のような値を設定することになっているOnKeyDownイベントを、持っている場合も同様です私は

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

を持っていたときに仕事をするので、いや、この話の教訓:あなたにも考慮にあなたのオプション名の最初の文字を取らなければならないようです。

+0

これは興味深い観察ですが、これはオリジナルとは関係ないと思います質問。 – cpburnz

関連する問題