检测脚本或鼠标单击是否触发输入焦点事件

时间:2014-03-11 16:42:34

标签: javascript jquery events input focus

我在输入上处理焦点事件并触发AJAX请求以运行带结果的$ .autocomplete()。

$('.section').on('focus', '#title-picker.unfetched', function(e) {
    var $titleSearch = $('[name="titlesMode"]:checked');
    var getTitles = $titleSearch.val() == "installmentTitles" ? Installment.GetAppList(selectedInstallment) : Installment.GetAllAppList();
    getTitles.done(function(result) { 
           //stuff happens here

是否通过输入中的点击触发了焦点?

焦点是由“改变”引发的。附加到输入的事件[name =" titlesMode"]

     }).fail(function(error){
     console.error(error);
    });        
})
.on('change', 'input[name="titlesMode"]', function() {
    $('#title-picker').addClass("unfetched");
    if ($('#title-picker').val() != '') $('#title-picker.unfetched').trigger('focus');


 });

我还触发-with $ .trigger('焦点'),如果输入有值并再次取结果,则会触发,具体取决于搜索模式。

我只需要弄清楚焦点事件是通过鼠标点击输入还是由$ .trigger()触发来触发的。

我找到了一些用于区分点击事件原点的代码,但没有用于焦点事件:/

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这里没有任何代码就很难回答。 无论如何,jQuery中的.on()和.trigger()方法都接受第二个参数。您可以使用普通对象存储变量以用于区分这两种情况。

参考文献:

.trigger()

.on()

答案 1 :(得分:0)

试试这个......

 var focusType;
$(document).click(function(){
focusType = 'click';}).keyup(function(){
focusType = 'key';
});

在触发焦点之前也改变此变量。