私は複数のオプションを選択できる選択ボックスがあります。選択ボックスには複数のoptgroupがあります。 javascriptでoptgroup全体を簡単に選択する簡単な方法はありますか?選択肢の中のoptgroup全体を簡単に選択する簡単な方法
答えて
。それぞれのオプトグループに、それをつかみやすくするためのクラスを与えます。
$("optgroup.className").children().attr('selected','selected');
あなたがグループを選択するユーザーに基づいてグループ全体を選択する場合は、次の手順を実行します。
$("optgroup.className").select(function(e) {
$(this).children().attr('selected','selected');
});
**両方の例は、テストされていない擬似コードですが、彼らは最小限で動作するはずです必要に応じて変更されます。
フレームワークを使用できない場合は、DOMをトラバースしてオプトグループと子を見つけなければなりません。 select
要素にリスナーを付けて、選択されている要素をつかんでその方法で子要素に移動することもできます。
jqueryの:私はすぐにDOMの選択を処理するためにjQueryの(または他のフレームワーク)を使用することをお勧め
$('#myoptgroup option').attr('selected', true);
私は通常、このような単純なジョブではjQueryを使用していませんが、その値はここで確認できます。あなたは、何のライブラリを使用していないスプリアスのIDやクラスを導入していないし、速く実行することの利点を持っています非jQueryのソリューションを好む場合それでも、ここで1は次のようになります。
<script type="text/javascript">
function selectOptGroupOptions(optGroup, selected) {
var options = optGroup.getElementsByTagName("option");
for (var i = 0, len = options.length; i < len; i++) {
options[i].selected = selected;
}
}
function selectOptGroup(selectId, label, selected) {
var selectElement = document.getElementById(selectId);
var optGroups = selectElement.getElementsByTagName("optgroup");
var i, len, optGroup;
for (i = 0, len = optGroups.length; i < len; i++) {
optGroup = optGroups[i];
if (optGroup.label === label) {
selectOptGroupOptions(optGroup, selected);
return;
}
}
}
</select>
<select id="veg" multiple>
<optgroup label="roots">
<option>Swede</option>
<option>Carrot</option>
<option>Turnip</option>
</optgroup>
<optgroup label="leaves">
<option>Spinach</option>
<option>Kale</option>
</optgroup>
</select>
<input type="button" onclick="selectOptGroup('veg', 'roots', true)" value="Select roots">
ご<optgroup>
は、あなたができるIDを持っている場合離れてselectOptGroup
関数とoptgroupをselectOptGroupOptions
にまっすぐに渡します。
私は今のところ同様のことをしようとしていました。
グループのラベルをクリックすると、<optgroup>
のが選択されました。
$('select > optgroup').click(function() {
$(this).children().attr('selected', true);
});
このソリューションの半分そのすべての子が選択になった<optgroup>
のラベルをクリックすると...
を働いた:最初の試みは、次のように行ってきました。
しかし単にそれはまだグループ内の他のすべての<option>
Sを選択した<option>
をクリック!問題はイベントバブリングでした。なぜなら、<option>
は<optgroup>
の中にあり、技術的にはそれもクリックしています。
したがって、最後に、<option>
が実際にクリックされた場合に、イベントが上方に泡立つのを抑制することができました。最終的な解決策は次のようになりました。
$('select > optgroup').click(function() {
$(this).children().attr('selected', true);
});
$('select > optgroup > option').click(function (e) {
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
});
ジョブが完了しました!
EDIT
InfuriatinglyこれはIE8での作業を動作しません(と疑わしい< IE8 - ?多分IE9)...
両方と要素のクリックイベントを完全に無視することにします。私が考えることができる唯一の代替案は、クリックをキャプチャするためにオプトグループのラベルの上に要素を配置することですが、おそらくその努力の価値はありません。
- 1. 簡単な選択は、次のよう
- 2. MySQLの一時テーブルを簡単に選択する方法は?
- 3. AltBeacon:ビーコンを選択する簡単な方法Eddystone
- 4. netBeansで行を選択する簡単な方法
- 5. Python 2.5のリストの選択が簡単
- 6. optgroupの選択肢としてDjangoモデル
- 7. 列全体からデータを選択し、選択タグに別の選択肢として表示する方法。
- 8. getSelectionで単語全体を選択
- 9. 選択ウィンドウの色を変更する最も簡単な方法html
- 10. ユーザーロケールの選択をHTMLで覚えるのが最も簡単な方法
- 11. Cでregexの選択肢を簡単に取得する方法はありますか?
- 12. php - 異なる値で複数選択する(セキュリティが簡単な方法)
- 13. ffmpegを使用したビデオフレームの簡単な出力選択
- 14. 好ましい変数値を選択する最も簡単な方法
- 15. 選択したデータからの簡単なjquery計算機
- 16. メソッド全体をスレッドセーフにする最も簡単な方法は?
- 17. カッサンドラデータモデリング - ホットスポットを選択してクエリを簡単にしますか?
- 18. Javascript - トリプルクリックで全体のテキスト選択を防止し、単一の単語のみを選択します
- 19. 予期せず簡単なメニュー選択とバブル動作
- 20. 他の選択肢の選択に基づいて選択肢を変更する方法
- 21. Android:選択肢を一度に選択する方法AlertDialog?
- 22. 簡単なLinq質問:複数の列を選択するには?
- 23. 異なる選択肢の選択肢を表示
- 24. 選択肢から選択肢を選択し、表のセルに選択肢の情報を表示
- 25. (Redis)クライアント全体を簡単にラップする方法
- 26. クリックして単一セル全体行を選択するデータグリッドVB6
- 27. 最初の行の単語で列全体を選択
- 28. ListView単一の選択肢がアイテムのサイズに適応する
- 29. optgroupグループのタイトルを選択
- 30. 選択タグでoptgroupのラベルを選択する方法はありますか?
まあ私はjQueryを使わないで解決策を見つけようとしていました。しかし、それを行う簡単な方法を見て、もう一方の側:ドームを横切って.... Jqueryです。 – blub
@blub - 多くの人がjQueryにそのように取り入れると思います。 ;-) –
自分でDOMをトラバースすることは大変難しいことではありませんが、フレームワークによって簡単にできます。 'document.getElementById( 'selectElementID')'はあなたにselect要素自体を与えます。次に、子をたどることだけです。イベントリスナーを追加してselectイベントをキャプチャし、希望のoptgroupの場合は解析することもできます。そうであれば、optgroupの子をトラバースして選択することもできます。 –