如何检查选择框中是否选择了特定值

时间:2009-08-13 15:58:43

标签: jquery

如果我有一个包含以下两个元素的表单。

<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中执行此操作?

4 个答案:

答案 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);
});