我有一个输入的经典案例,在获得焦点时会被清除。
问题在于,当用户从电子表格中复制某些数据时,例如然后返回将此数据添加到输入中,触发输入的焦点事件并清除它们键入的任何内容。
如何防止由于浏览器窗口焦点而触发onfocus 而不是点击输入,标签,标签点击或任何传统操作网页?
没有遗憾。
编辑: 好吧,显然有些人喜欢每次帖子都没有代码时都会投票。因此,如果您需要一个代码来掌握这个简单的想法,那么它就是:
<input type=text onfocus="this.value=''">
答案 0 :(得分:1)
从技术上讲,切换窗口会导致元素丢失/重新获得焦点。当然,这会触发focus
事件处理程序。没有办法区分导致焦点事件发生的原因。
如果您只想在手动选择字段时清除该字段,请改为使用click
事件:
<input type=text onclick="this.value=''">
您可以检测页面是否失去焦点。有可能使用它来推断在重新获得焦点时是否应该清除input
。我不确定事件顺序是否重要,或者事件顺序是否因所涉及的浏览器而异。
<input type=text>
donotclear = false;
addEventListener('blur',function(e){
donotclear = true;
});
document.getElementsByTagName('input')[0].addEventListener('focus',function(e){
if(donotclear) {
donotclear = false;
} else {
this.value = '';
}
});