クリックしたときにのみ入力する必要がある選択ボックスがあります。関連するクエリには時間がかかりますので、ページに表示されている標準データから削除します。ajaxを介して単一の選択ボックスオプションを遅延ロードする適切な方法
私は、loadMyData(element, id)
にajaxリクエストを行い、JSONとしてデータを返します。次に、選択ボックスに値を入力します。
イベントは、このよう要素にバインドされます。
<select onclick="loadMyData(this, 1)">
</select>
をし、選択ボックスは、このよう移入さ:
オン$.each(data, function(index, optionData) {
select.options[element.options.length]
= new Option(optionData.Text, optionData.Value);
});
Geckoベースのブラウザで動作しますが、Webkitのもので(サファリクロム)を選択すると、選択ボックスをクリックすると、空のドロップダウンボックスがajaxリクエストの前に表示され、レスポンス後にドロップダウンボックスはリフレッシュされません。選択したボックスの外側をクリックして、もう一度クリックすると、更新された「オプション」が表示されます。
コンテンツを強制的に更新する方法はありますか?または単に自動的に最初のものを選択してドロップダウンボックスを非表示にするには?
** onfocusを試しても同じ結果が見つかりました。 onmouseoverは動作しますが、「使用不可」です。 onchangeは、初期状態では空である選択ボックスにより実行可能ではありません*
あなたはこの1との同期要求を使用して考えがありますか?これは、タイムラグをなくし、選択ボックスに適切に更新するチャンスを与えます。また、なぜonclickベースの読み込みですか?ドロップダウンに達する前に、他のUI要素とのユーザーの対話に基づいて更新を実行することは可能ですか?選択が他のUI選択に依存しない場合は、事前に入力するのはなぜですか? –
また、アフターシェントとして...非同期モードでも、DOM Readyのローディング機能を起動してみませんか?こうすることで、最初のページが長いクエリを実行せずにすぐに読み込まれ、ブラウザがフリーズしなくなります。ユーザーがUI要素を操作する準備が整うと、選択ボックスに静かに入力されます。 –