jQuery - 用于检测是否已选择HTML select选项的事件处理程序

时间:2011-08-23 00:26:59

标签: javascript jquery html event-handling

如果select变量中的任何选项被更改,我如何在jQuery中检测到?

例如[pseudocode]:

event handler function -> option changed(){      
  //do some stuff
}

编辑:

我有以下选择:

<select id = "selectattribute">
  <OPTION VALUE="0">Choose Attribute</OPTION>
  <?php echo($options);?>
</select>

我在jQuery中尝试这个:

$(document).ready(function() {
  $("#selectattribute").change(function() {
     alert('Handler for .change() called.');
  });
});

什么都没发生......功能不是触发。

编辑:当我使用$("#select")代替$("#selectattribute")...can you not apply it to particular select tags?

时,它可以正常运行

6 个答案:

答案 0 :(得分:8)

来自jQuery docs regarding the change handler

<form>
  <input class="target" type="text" value="Field 1" />
  <select class="target">
    <option value="option1" selected="selected">Option 1</option>
    <option value="option2">Option 2</option>
  </select>
</form>
<div id="other">
  Trigger the handler
</div>

事件处理程序可以绑定到文本输入和选择框:

$('.target').change(function() {
  alert('Handler for .change() called.');
});

答案 1 :(得分:2)

您的代码使用鼠标在Firefox中运行,请参阅this fiddle

然而,根据this bug report

,使用键盘是另一回事

为了解决这个问题,我添加了一个按键处理程序来从元素中移除焦点然后重新聚焦,按照this fiddle

如果在使用鼠标时未触发更改事件,请检查php代码呈现的选项。寻找可能“打破”select标签的结构。

答案 2 :(得分:1)

$("select").change(function() {})

答案 3 :(得分:0)

尝试绑定:

  $("#selectattribute").bind('change', function() {
     alert('Handler for .change() called.');
  });

或更改jQUery中的函数:

  $("#selectattribute").change(
     function() {
        alert('Handler for .change() called.');
     }
  ); 

答案 4 :(得分:0)

也许有另一个标签,其id被命名为“selectattribute”。标签id应该是唯一的。如果有多个id,jQuery将使用第一个id。

答案 5 :(得分:0)

看起来您的JQuery未加载,请先检查它是否已加载

    //case if mini jQueryis not used replace with window.jQuery
    if (window.$) {
    console.debug('jQuery is loaded ');
    } else {
    console.debug('jQuery is not loaded ');
    }