每次输入成为焦点时,我都会使用iScroll自动滚动。但是,在android上,蓝色指针在文档滚动时保持冻结状态。因此,我需要从元素中取消聚焦,滚动,然后再次聚焦而不调用处理程序。
我有一个功能,可以在所有输入和未来输入成为焦点时进行监听。
this.inputFocusListener = function () {
var self = this;
$(document).on("focus", "input", this.bindFocusHandler.bind(this));
},
我使用上面的.bind(this)
来更改此上下文,因为我将在处理程序中调用的父级中有其他方法。
一旦进入处理程序,我想从处理程序取消绑定,然后调用blur()从输入元素取消聚焦,然后我自动向上滚动向下,然后在滚动后再次聚焦但没有调用处理程序:
this.bindFocusHandler = function (e) {
$(e.currentTarget).off('focus...');
$(e.currentTarget).blur();
....scroll up/down...
//now focus again on the input without calling handler
$(e.currentTarget).focus();
},
但是当我再次调用焦点时,我进入了一个infinte循环,因为我无法解除该元素的焦点事件...