8

以下は、選択オプションのコードであり、データベースからphpを使用して生成します.jQueryまたはJavaScriptselected="selected"を使用して追加しようとしています:value="4"

<select id="countryselect" name="country">
<option value="1">Afghanistan</option>
<option value="2">Albania</option>
<option value="3">Algeria</option>
<option value="4">Malaysia</option>
<option value="5">Maldives</option>
</select>

この投稿を参照しようとしましたが、まだできません..以下は私の現在のスクリプトです:

<script>
localStorage.setItem("Select1", "Malaysia");
    $('#countryselect').find('option').each(function(i,e){
        if($(e).val() == localStorage.getItem("Select1")){
            $('#countryselect').prop('selectedIndex',i);
        }
    });
</script>

ありがとう。

4

6 に答える 6

15
于 2012-09-24T02:10:12.073 に答える
13

このselected属性はブール属性であり、その存在によって関連する DOM プロパティの値が に設定されtrueます。属性が存在しない場合、選択されたプロパティの値は ですfalse

オプションに selected属性がある場合、ページが最初にロードされるとき、またはコントロールが含まれるフォームがリセットされるときに、そのオプションが選択されたオプションになります。

オプションの selectedプロパティが に設定されてtrueいる場合、そのオプションが選択されます。ただし、フォームがリセットされると、デフォルトで選択されたオプションが選択されます (つまり、 selected属性を持つもの、最初のオプション、またはなし)。

選択した属性を設定するには (つまり、オプションをデフォルトの選択済みオプションにします):

var select = document.getElementById('countryselect');
var option;

for (var i=0; i<select.options.length; i++) {
  option = select.options[i];

  if (option.value == '4') {
  // or
  // if (option.text == 'Malaysia') {
     option.setAttribute('selected', true);

     // For a single select, the job's done
     return; 
  } 
}

これにより、オプションが現在選択されているオプションになるわけではなく、選択された属性が追加されるだけであることに注意してください。それが選択されていることを確認するには (それが必要な場合)、selected プロパティもtrue(以下を参照) に設定します。

setAttributeの 2 番目の引数は、属性の値を設定するために使用される文字列であることに注意してください。ただし、選択された属性には「設定可能な」値がないため、2 番目の引数は無視されます (たとえばfalse、属性を設定し、オプションをデフォルトの選択済みオプションにします)。それはいくつかの混乱を引き起こします。:-)

選択したプロパティを設定するには (つまり、オプションを現在選択されているオプションにするだけです):

var select = document.getElementById('countryselect');
var option;

for (var i=0; i<select.options.length; i++) {
  option = select.options[i];

  if (option.value == '4') {
  // or
  // if (option.text == 'Malaysia') {
     option.selected = true;
     return;
  } 
}
于 2012-09-24T02:20:29.227 に答える
8

localStorage.getItem("Select1") will return Malaysia and $(e).val() will return 1,2...5 in each loop. So your condition will never be true. Instead use

<script>
localStorage.setItem("Select1", "4");
    $('#countryselect').find('option').each(function(i,e){
        if($(e).val() == localStorage.getItem("Select1")){
            $('#countryselect').prop('selectedIndex',i);
        }
    });
</script>
于 2012-09-24T02:10:43.113 に答える
6

jQuery 1.6 の時点で、「フォーム要素のチェック済み、選択済み、または無効な状態などの DOM プロパティを取得および変更するには、.prop() メソッドを使用します。」

$("#countryselect option[value=4]").prop("selected", "selected")
于 2013-07-10T14:33:42.663 に答える
1

ちょうど試して

$("#countryselect").val('4')
    //OR

$("#countryselect option").val('4')​.attr("selected", true)​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

このフィドルを確認してください

于 2012-09-24T02:07:12.737 に答える
-1
$('#countryselect > option[value *= "4"] ').attr('selected',true);

これはうまくいくでしょう

于 2012-09-24T02:17:07.327 に答える