ASP.NET プロジェクトに、4 つのオプションと既定の状態を持つドロップダウン リストがあります。ポップアップ ダイアログを開くボタンもあります。ddl の特定のオプションはポップアップ ダイアログを必要としないため、ユーザーが特定のオプションを選択した場合にポップアップを開くボタンを無効にしたいと考えています。ポップアップは、画像に関連付けられている onClick イベントを介して呼び出されます。4 つの ddl オプションのうち 2 つの onClick イベントの発生をブロックするにはどうすればよいですか? コードの簡略版は次のとおりです。
HTML 構造:
<select class="selClass" id="selID" name="selName"><option value="">- Select -</option>
<option value="Option1">Option1</option>
<option value="Option2">Option2</option>
<option value="Option3">Option3</option>
<option value="Option4">Option4</option>
</select>
Jクエリ:
$(function () {
if ($("#ddlID option:selected").text() == "- Select -")
$('img.popButton').button({ disabled: true })
else if ($("#ddlID option:selected").text() == "Option1")
$('img.itemgridimg').button({ disabled: false });
else if ("#ddlID option:selected").text() == "Option2")
$('img.itemgridimg').button({ disabled: true });
else if ("#ddlID option:selected").text() == "Option3")
$('img.itemgridimg').button({ disabled: true });
else if ("#ddlID option:selected").text() == "Option4")
$('img.itemgridimg').button({ disabled: false });
});
これによりボタンの onClick イベントが完全に無効になることを期待していましたが、(ui-diabled クラスに基づいて) ボタンの視覚的な状態を変更するだけで、ポップアップ ウィンドウはアクティブなままです。
前に述べたように、ポップアップは image タグ内で動的に生成された onClick イベントを介して呼び出されます。ユーザーがオプション 2 または 3 のみを選択したときにポップアップ イベントが発生しないようにするにはどうすればよいですか?
アップデート:
ドロップダウンからの特定の選択に基づいてボタンを単純に非表示にすることは間違いなくより良いアプローチですが、今では、他の div が非表示になっている間に新しい画像を動的に挿入したいと考えています。これは単純な式だと思っていましたが、どこかでエラーを起こしています...古い div が非表示になっているため、画像を挿入できません。代わりの画像を使用して新しい div を動的に挿入するにはどうすればよいですか? 私の更新されたコードは以下のとおりですが、関数が原因でエラーが発生しています...何か提案はありますか?
$('img.itemgridimg').hide();
$("[id][name*='Status']:eq(0)").change(function () {
if ($("[id][name*='Status']:eq(0) option:selected").text() == "- Select -")
$('img.itemgridimg').eq(0).hide();
$("<div/>",{
"html" : "<img src='../Images/btnOff.png'>"
}); // <---- bad code…need help
else if ($("[id][name*='Status']:eq(0) option:selected").text() == "Missing")
$('img.itemgridimg').eq(0).show();
else if ($("[id][name*='Status']:eq(0) option:selected").text() == "Not Applicable")
$('img.itemgridimg').eq(0).hide();
else if ($("[id][name*='Status']:eq(0) option:selected").text() == "Functional / Acceptable As Is")
$('img.itemgridimg').eq(0).hide();
else if ($("[id][name*='Status']:eq(0) option:selected").text() == "Needs Repair/Replace/Cleaning")
$('img.itemgridimg').eq(0).show();
});