Jquery 检测调焦是否是由于按键或点击造成的
我目前在一个特定的表单元素上使用focusout,以便知道用户何时向前移动或单击了另一个字段 我需要知道这一点,因为在此之后会立即启动ajax调用,并填充几个不同的字段(例如,输入有效的邮政编码,搜索db并返回city) 现在,我的问题是,ajax调用接收到一个html响应,在加载它时,会导致表单失去当前焦点 我需要一种方法来保存该焦点,并在ajax调用后恢复它 到目前为止,我已经找到了工作的导航。它经常中断,并且还会干扰页面上其他内容的加载(例如对话框窗口)。所以,我觉得必须有更好的方法来做,这就是我来这里的原因。如果你需要更多信息,请告诉我。代码如下 祝你一切顺利Jquery 检测调焦是否是由于按键或点击造成的,jquery,Jquery,我目前在一个特定的表单元素上使用focusout,以便知道用户何时向前移动或单击了另一个字段 我需要知道这一点,因为在此之后会立即启动ajax调用,并填充几个不同的字段(例如,输入有效的邮政编码,搜索db并返回city) 现在,我的问题是,ajax调用接收到一个html响应,在加载它时,会导致表单失去当前焦点 我需要一种方法来保存该焦点,并在ajax调用后恢复它 到目前为止,我已经找到了工作的导航。它经常中断,并且还会干扰页面上其他内容的加载(例如对话框窗口)。所以,我觉得必须有更好的方法来做,
$('.DZipCode').focusout(function () {
var ZipCode = $('.DZipCode').val();
$.ajax({ // create an AJAX call...
async: false,
type: "POST", // GET or POST
url: "/Home/SelectZipCodeDataDestination", // the file to call`
data: { zipCode: ZipCode },
success: function (response) { // on success..
$(":input").focus(function() {
var prevFocus;
prevFocus = $(this).attr("id");
$('#quotetab').html(response);
$('#'+prevFocus).focus();
// });
} // end of success
}); // end of .ajax
})) 我能想到的最简单的方法是在按下某个键时设置一个标志,然后在需要时检查标志
var tabPressed = false;
$('input[type="text"], textarea')
.keydown(function(e) {
var keyCode = e.keyCode || e.which;
tabPressed = (keyCode==9) ? true : false;
})
.focus(function() {
tabPressed = false;
});
那你就可以了
if(tabPressed) {
//some stuff
}
在您的ajax成功回调中(或任何地方)。需要额外一点时间才能启动,但方向绝对正确。出于某种原因,来自ajax调用的响应将我的tabPressed变量重置为false。我最终只是将它的值存储在focusout函数中的一个辅助变量中。谢谢你的帮助!