我编写了一个blur()
事件来处理文本字段上的焦点事件。代码看起来像这样。
$("input[type=text]").blur(function (event) {
if(this.value){
//do something
}
event.originalEvent.handled = true;
});
我的情况是文本字段会自动获得上一页文本的焦点。
举例来说,在flipkart.com
中,在搜索字段中输入一些文字,然后点击搜索。我的event handler
必须执行焦点输出事件。 (这是正确的)。
在下一页中,输入的文本在文本字段中预先填充,焦点也在其上。因此,在此页面中,如果我执行某些操作,文本字段将失去焦点,并再次调用相同的事件。我不需要这样做。
有没有办法避免这种情况?通过组合两个事件处理程序?请帮忙。
答案 0 :(得分:0)
试试这个:您知道上一页的文本值,只需将其与当前文本值进行比较,如果两者相同则不执行任何操作。见下面的代码
ui-icon-arrow-4-diag
答案 1 :(得分:0)
更改您的代码,以便该功能仅绑定到后元素明确地与元素交互,如下所示:
$("input[type=text]").on('keyup keypress change click', function() {
$("input[type=text]").blur(function(event) {
if (this.value) {
//do something
alert('blur was called after interacting with element');
}
event.originalEvent.handled = true;
});
});
$('#test').focus();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="test" value="some value">