如何跟踪SELECT元素中的更改用户使用鼠标或按Enter键选择项目之前?SELECT onChange事件
可以收听keyUp事件,该事件允许使用键盘跟踪用户在列表中的导航。但有没有更通用的方法,它允许跟踪列表“前期”的变化?
如何跟踪SELECT元素中的更改用户使用鼠标或按Enter键选择项目之前?SELECT onChange事件
可以收听keyUp事件,该事件允许使用键盘跟踪用户在列表中的导航。但有没有更通用的方法,它允许跟踪列表“前期”的变化?
Javascript支持'onbeforechange'事件,这可能会诀窍,但我不知道这是跨浏览器广泛实施?如果支持的范围足够广泛,请在更改之前存储以前的值。否则,只需将原始值存储在隐藏字段或JS变量中。
需要参考。 Opera,IE,Chrome,Safari或Firefox都支持这个事件...... – 2012-03-21 12:32:57
IE(至少8+)支持它,我只用它在一个封闭的IE环境中,尽管我不需要看广泛的实现。 – Purpletoucan 2012-03-21 12:44:26
我已经在IE6-9,FF 11,Chrome 17,Opera 11.61,Safari 5.1.2中测试过了,但是'onbeforechange'事件不存在**(测试过'.onbeforechange = ..','addEventListener '和'.attachEvent')。 – 2012-03-21 13:39:38
将鼠标移到选择项上时不会发生事件。
如您所说,您可以跟踪鼠标移动。但是,由于不同的浏览器以不同的方式呈现列表,这将是一项艰巨的任务。
但是,您可以自己创建一个选择框,而不使用本机选择
,你必须创建一个函数这样的例子: -
function example(){
jQuery('select#service_billing_state').change(function() {
//your code here
});
}
,你必须调用这个函数的onchange,的onblur, onkey,onfocus ...
我总是用focus click
这个听众。
$('select').bind('focus click',function(){
//IMACHANGINGMYOPTION!!!!!!!!!!
//var val=$(this).val();
});
以上应于变更事件之前被触发:
$('select').change(function(){
//The option has been changed.
});
说明:每当用户重点选择,我们也得到了所选项目的价值,我们可以前的操纵它如果触发,则为onchange
事件。 click
侦听器被添加,以防我们的选择已被集中,并且用户点击它在他实际选择一个选项并触发更改之前展开。
这是使用的例子,让我们跟踪前值
你可以直到你重新载入页面之前的值存储在其中存在的局部javascript变量。 – slash197 2012-03-21 12:26:13