私は Wicket でアプリケーションに取り組んでいます。私のすべてのドロップダウンには、デフォルトのオプション「1つを選択してください」があります。ユーザーが値を変更すると、一部の JavaScript が「1 つ選択」オプションを削除します。
私のドロップダウンの一部には、ajax onchange イベント (Wicket onchange 動作) もあります。
私の問題は、Internet Explorer (7 および 8) で「1 つ選択」のデフォルト オプションを削除すると、onchange イベントがトリガーされることです。
したがって、ajax リスナーを使用したドロップダウンはすべて 2 回呼び出されます。最初の ajax 呼び出しがフレームワークによって起動され、次に javascript がオプションを削除して、2 番目の onchange イベントを引き起こします。
例ごとのFirefoxでは、私のajaxリスナーは一度だけ呼び出されます。オプションを削除しても onchange ウィッチはトリガーされません。問題ありません。
JavaScript コード:
var comboboxes = $("select:not(.emptyOptionEnhanced, .noRemoveEmptyChoice)");
comboboxes.each(function() {
var combo = $(this);
var emptyOptions = combo.find("option[value='']");
if (emptyOptions.length) {
combo.debug("Enhancing combo box with empty option");
combo.change(function(e) {
emptyOptions.debug("Removing empty option").remove();
});
).addClass("emptyOptionEnhanced");