如何在用户使用鼠标选择项目或按Enter键之前跟踪SELECT元素的变化?
可以收听keyUp事件,该事件允许使用键盘跟踪用户在列表中导航。但是有更通用的方法,它允许跟踪列表“最终”变化吗?
答案 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
侦听器以防我们的选择已经集中,并且用户点击它以在实际选择选项并触发更改之前展开。
这是一个使用示例,可让我们跟踪之前的值:
答案 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中调用这个函数......