1

ヘルプ!私はjQueryを使用してAJAX呼び出しを行い、ユーザーの以前の入力(サーバー側で入力された別のドロップダウンから)を考慮して動的にドロップダウンを入力しています。Firefox (IE6/7、Opera、Safari) 以外のすべてのブラウザーでは、append 呼び出しによって、既存のオプション「Select An」の下に情報が実際に追加されます。しかし、Firefox では、JQuery アクションを .append または置換 (.html()) に指定したかどうかに関係なく、選択コントロールに与えられた最後の項目が自動的に選択されます。

<select name="Products" id="Products" onchange="getHeadings(this.value);">
  <option value="">Select Product</option>
</select>    

function getProducts(Category) {
  $.ajax({
    type: "GET",
    url: "getInfo.cfm",
    data: "Action=getProducts&Category=" + Category,
    success: function(result){
      $("#Products").html(result);
    }
  });
};

何かご意見は?過去に別の空白の最初のオプションを送信してから、JavaScript オプションをトリガーして最初のインデックスを再選択しようとしましたが、これによりコード内で onChange イベントがトリガーされ、ユーザーにとってはかなり面倒です。


アップデート:

スクリプトが返すものの例を次に示します

<option value="3">Option 1</option>
<option value="4">Option 2</option>
<option value="6">Option 3</option>

オプションで、.append() の代わりに .html() メソッドを使用する場合は、別の

<option value="">Select a Product</option>

結果の一番上。


@ダリル・ハイン

スクリプトが返すものの例を次に示します

<option value="3">Option 1</option>
<option value="4">Option 2</option>
<option value="6">Option 3</option>

オプションで、.append() の代わりに .html() メソッドを使用する場合は、別の

<option value="">Select a Product</option>

結果の一番上。

4

3 に答える 3

2

成功関数を変更して、選択したアイテムを最初のオプションにリセットできますか?

$("#Products").append(result).selectedIndex = 0;

またはそれを前の選択に設定しますか?

var tmpIdx = $("#Products").selectedIndex;
$("#Products").append(result).selectedIndex = tmpIdx;

onChangeイベントが発生しない場合は、いつでもフラグを設定してフォームが更新中であることを示すことができ、変更イベントはそのフラグをチェックして、設定されている場合は終了できます。

于 2008-09-11T23:31:03.337 に答える
0
$('#field').find('option:first').attr('selected', 'selected').parent('select');

これが機能することを確認してください

于 2009-01-29T04:54:30.960 に答える
0

私はちょうど次のことをしました、そしてそれはうまくいきました:

<select name="Products" id="Products">
<option value="">Select Product</option>
</select>

<script type="text/javascript">
$('#Products').append('<option value="1">test 1</option><option value="3">test 3</option><option value="3">test 3</option>');
</script>

スクリプトは何を返しますか?

于 2008-09-11T20:18:27.903 に答える