如何通过事件侦听器捕获光标的位置?
换句话说,如果我的用户点击一个按钮,是否有可能找到当时光标的位置?如果是这样,怎么做?
更新 我不确定我是否足够清楚。我不想要鼠标位置。我的意思是,如果光标位于表单的输入字段内,我想定位光标并找出 FOCUS 的位置。
如何通过事件侦听器捕获光标的位置?
换句话说,如果我的用户点击一个按钮,是否有可能找到当时光标的位置?如果是这样,怎么做?
更新 我不确定我是否足够清楚。我不想要鼠标位置。我的意思是,如果光标位于表单的输入字段内,我想定位光标并找出 FOCUS 的位置。
$("#button").click(function(e){
console.log(e.clientX)//relative screen
console.log(e.clientY)
console.log(e.pageX)//relative document(scroll + window position)
console.log(e.pageY)
})
这应该可以解决问题:http: //jsfiddle.net/eTsN3/
$('button').click(function (e) {
alert(e.pageX + '/' + e.pageY);
});
如果您想使用 Jquery 捕获鼠标位置并将其存储在某个标签中,请使用:
$(document).mousemove(function(e){
$('#sometag').html("X Axis : " + e.pageX + " Y Axis : " + e.pageY);
});
鼠标位置信息由e.pageX
和支持e.pageY
。所以在你的情况下你可以使用
$('button').click(function(e){
$('#sometag').html("X Axis : " + e.pageX + " Y Axis : " + e.pageY);
});
你可以阅读这个
您可以通过以下方式找出当前具有焦点的输入字段:
$("input:focus")
但是,当您单击按钮时,这将不起作用,因为在为单击的处理程序运行单击处理程序之前,单击输入字段外部会使其模糊。请参阅我演示的这个小提琴。它使用preventDefault()
,但这并不能防止模糊。
当然,当您单击按钮时,焦点会从其他任何地方消失。但我似乎明白你想知道刚才的焦点在哪里。
你可以这样:
$('input, textarea, select').on('focus', function() {
console.log($(this).attr('id') + ' just got focus!!');
window.last_focus = $(this).
});
$('button').on('click', function() {
console.log('Last focus was on ' + window.last_focus.attr('id'));
});
这只是一个非常幼稚的实现。我也很好奇你为什么需要这个?
还有一个focusout
事件是在某些东西失去焦点时触发的,这可能更合适。