如果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?
答案 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 ');
}