SELECT onChange事件

时间:2012-03-21 12:23:57

标签: javascript jquery html

如何在用户使用鼠标选择项目或按Enter键之前跟踪SELECT元素的变化?

可以收听keyUp事件,该事件允许使用键盘跟踪用户在列表中导航。但是有更通用的方法,它允许跟踪列表“最终”变化吗?

4 个答案:

答案 0 :(得分:2)

我总是使用focus click监听器。

$('select').bind('focus click',function(){
//IMACHANGINGMYOPTION!!!!!!!!!!
    //var val=$(this).val();
});

以上内容应在on change事件之前触发:

$('select').change(function(){
//The option has been changed.
});

说明:每当用户聚焦选择时,我们都会获得所选项的值,如果触发,我们可以在onchange事件之前对其进行操作。添加click侦听器以防我们的选择已经集中,并且用户点击它以在实际选择选项并触发更改之前展开。

这是一个使用示例,可​​让我们跟踪之前的值:

http://jsfiddle.net/SUKqS/8/

答案 1 :(得分:0)

Javascript支持'onbeforechange'事件,这可能会起到作用,但我不知道这在浏览器中的实现有多广泛?如果支持得足够广泛,请在更改之前存储先前的值。如果做不到这一点,只需将原始值存储在隐藏字段或JS变量中。

答案 2 :(得分:0)

将鼠标移到选择项目上时,不会触发任何事件。

如你所说,你可以跟踪鼠标移动。但是,由于不同的浏览器以不同的方式呈现列表,这将是一项艰巨的任务。

但是,您可以自己创建一个选择框而不使用本机选择

答案 3 :(得分:0)

你必须创建一个像这个例子的函数: -

function example(){
jQuery('select#service_billing_state').change(function () {
//your code here
});
}

你必须在onchange,onblur,onkey,onfocus中调用这个函数......