我在输入上处理焦点事件并触发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()触发来触发的。
我找到了一些用于区分点击事件原点的代码,但没有用于焦点事件:/
有什么想法吗?
答案 0 :(得分:2)
这里没有任何代码就很难回答。 无论如何,jQuery中的.on()和.trigger()方法都接受第二个参数。您可以使用普通对象存储变量以用于区分这两种情况。
参考文献:
答案 1 :(得分:0)
试试这个......
var focusType;
$(document).click(function(){
focusType = 'click';}).keyup(function(){
focusType = 'key';
});
在触发焦点之前也改变此变量。