フォーム内の「X」チェックボックス(任意の入力要素)と「M」オプション選択インデックス(「M」は「X」より小さい)と仮定します。次に、「M」オプションのインデックス/値を選択し、残りのチェックボックスを最適に選択解除するにはどうすればよいですか?
つまり、10 個のチェックボックスと 5 つのオプション インデックス (例: 1,2,4,5,8) があるとします。次に、指定されたインデックスでチェックボックスを選択する必要があります。
次のコードを思い付くことができました。
HTML:
<div id="Options">
<input id="choice_1" type="checkbox" name="choice_1" value="Option1"><label for="choice_1">Option1</label>
<input id="choice_2" type="checkbox" name="choice_2" value="Option2"><label for="choice_2">Option2</label>
<input id="choice_3" type="checkbox" name="choice_3" value="Option3"><label for="choice_3">Option3</label>
..
..till choice_10
</div>
IN JS:
//Have to select checkboxes with "Value" in choicesToSelect and give a selection
//effect to its label
var choicesToSelect={"Option1","Option9","Option3","Option4","Option2"};
selectHighlightCheckBoxes(choicesToSelect);
function selectHighlightCheckBoxes(choices){
$.each(
choices, function(intIndex, objValue) {
//select based on id or value or some criteria
var option = $("#Options :input[value=" + objValue + "]") ;
if ($(option).is("input[type='radio']") || $(option).is("input[type='checkbox']")) {
$(option).attr('checked', true);
$(option).next('label:first').css({ 'border': '1px solid #FF0000', 'background-color': '#BEF781', 'font-weight': 'bolder' });
} else if ($(option).is("input[type='text']")) {
$(option).css({ 'border': '1px solid #FF0000', 'background-color': '#BEF781', 'font-weight': 'bolder' });
} else {
}
}
);
}
しかし、残りの部分にも効果を追加したいと思います(choiceToSelect配列ではありません)。(choiceToSelect に含まれていない人には赤色かもしれません) これは 1 回のトラバーサル/ループで実行できますか? 最適ですか?またはより良い方法?