我有一些输入字段相互叠加,我希望能够检查用户是否使用了tab键或单击以关注当前输入字段。
检查.live('click', function() {
很容易,但我不知道如何检查他们是否使用tab来关注当前输入字段。
答案 0 :(得分:6)
我确信有很多方法可以做到这一点,但一种方法是监听keyup
事件,然后找出关注的元素,如果有的话:
$(document).on('keyup', function(e) {
if(e.keyCode == 9) {
var input = $(this).find('input:focus');
// input is the element that has focus after the tab key was pressed
}
});
这可能无法保证tab
键用于将焦点带入元素,但它可能足以满足您的需求。
如果要检查用户在输入字段获得焦点之前使用的事件类型,请尝试:
$(document).on('keyup', function(e) {
if(e.keyCode == 9) {
findFocus(e);
}
}).on('click', 'input', findFocus);
function findFocus(e) {
var input = $(document).find('input:focus');
if ( input.length ) {
alert('Input was focused using '+e.type);
}
}
另请注意,我使用.on()
事件而不是.live()
,因为live
在1.7中已弃用。
答案 1 :(得分:1)
听起来你想要“焦点”事件,如果用户点击字段的OR标签就会触发该事件
.on('focus', function() {});
此答案还指出“live”已弃用,请改用“on” https://stackoverflow.com/a/4944344/703173
答案 2 :(得分:0)
$('input').on('click', function() {
$(this).data('clicked', true);
}).on('focus', function() {
setTimeout(function(){
if($(this).data('clicked') == true){
// clicked to focus
}else{
// used tab key to focus
}
$(this).data('clicked', false);
}, 100);
});