簡體   English   中英

Javascript:如何防止在窗口聚焦時觸發對輸入的聚焦?

[英]Javascript: How to prevent triggering focus on input when window is focused?

我有一個經典的輸入案例,在獲得焦點時會被清除。

問題是當用戶從電子表格中復制一些數據,例如,然后回來將這些數據添加到輸入時,輸入的焦點事件被觸發,並且他們輸入的任何內容都被清除。

如何防止 onfocus 在由於瀏覽器窗口焦點而不是由於點擊輸入、標簽、點擊標簽或頁面中的任何傳統操作而被觸發

請不要使用 JQUERY。

編輯:好吧,顯然有些人喜歡在每次帖子沒有一些代碼時投反對票。 所以如果你需要一個代碼來掌握這個簡單的想法,這里是:

<input type=text onfocus="this.value=''">

從技術上講,切換窗口確實會導致元素失去/重新獲得焦點。 這當然會觸發focus事件處理程序。 無法區分導致焦點事件發生的原因。

如果您只想在手動選擇時清除該字段,請改用click事件:

<input type=text onclick="this.value=''">

您可以檢測頁面是否失去焦點。 可以使用它來推斷當input重新獲得焦點時是否應該清除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 = '';
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM