7

選択する必要があるオプション値を取得した後、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);
}
4

3 に答える 3

12

val()を使用して、select要素の値を設定できます。

変化する

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

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

デモフィドル

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

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

attr vs prop、およびjQuery1.6リリースノートの詳細を読むことができます

デモフィドル

于 2013-03-04T06:06:07.830 に答える
0

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

<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>

そうです、話の教訓: オプション名の最初の文字も考慮する必要があるようです。

于 2015-10-29T18:08:42.560 に答える
0

以下のステートメントでタイプミスのあるデータを使用すると、val が機能していないように見えます。気付くのに時間がかかりました。

$("#mymenu").val(data);
于 2013-12-10T14:28:25.010 に答える