如果我有一个包含以下两个元素的表单。
<select name="" size="5" id="reasons" multiple="multiple">
<option value="1">test1*</option>
<option value="2">test2*</option>
<option value="3">test3*</option>
<option value="4">test4</option>
<option value="5">test5</option>
</select>
<input type="checkbox" name="somecheckbox" id="checkboxId"/>
在选择框中,用户可以选择多个内容。 在提交后,我如何检查用户是否已选择其中一个带有'*'的选项,如果他们已经自动勾选了复选框?
有没有办法在jQuery中执行此操作?
答案 0 :(得分:2)
您可以通过执行以下操作来完成此操作:
var hasStar = ($('#reasons option:selected:contains(*)').length > 0);
基本上,您选择的文字包含<option>
的{{1}}所包含的所有选定<select id="reasons">
代码。
答案 1 :(得分:0)
在普通的javascript中你会做这样的事情:
var sel = document.getElementById('reasons');
for (var i = 0, l = sel.options.length; i < l; ++i) {
if (sel.options[i].selected && sel.options[i].innerHTML.match(/\*/)) {
document.getElementById('checkboxId').checked = true;
break;
}
}
答案 2 :(得分:0)
是否有理由不更新'checkbox'd'更改'reason'选择? (与提交相反)
答案 3 :(得分:0)
我建议您将此绑定到<select>
和<form>
:
$(document).ready(function() {
var selectHandler = function() {
if ( this.options[this.selectedIndex].innerHTML.match(/\*$/) ) {
$("#checkboxId").checked = true;
}
};
$("#reasons").bind("change keypress", selectHandler);
$("#whatever-form").bind("submit", selectHandler);
});