Jquery 检测调焦是否是由于按键或点击造成的

Jquery 检测调焦是否是由于按键或点击造成的,jquery,Jquery,我目前在一个特定的表单元素上使用focusout,以便知道用户何时向前移动或单击了另一个字段 我需要知道这一点,因为在此之后会立即启动ajax调用,并填充几个不同的字段(例如,输入有效的邮政编码,搜索db并返回city) 现在,我的问题是,ajax调用接收到一个html响应,在加载它时,会导致表单失去当前焦点 我需要一种方法来保存该焦点,并在ajax调用后恢复它 到目前为止,我已经找到了工作的导航。它经常中断,并且还会干扰页面上其他内容的加载(例如对话框窗口)。所以,我觉得必须有更好的方法来做,

我目前在一个特定的表单元素上使用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函数中的一个辅助变量中。谢谢你的帮助!