亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

onBlur 事件阻止 onClick 事件

onBlur 事件阻止 onClick 事件

qq_笑_17 2023-08-05 21:10:35
我有一個帶有 onfocus 和 onblur 事件的輸入文本框。文本框下方是一個 div,通過 display: none 隱藏。如果文本框獲得焦點,則應顯示 div;如果文本框模糊,則應隱藏該 div。這似乎有效?,F在,我想讓 div 保持可見,或者如果我單擊 div(或其內容之一)本身,則可以對 div 進行任何單擊。這是行不通的。onBlur 事件阻止 div 上的任何事件。我已經嘗試確定單擊了哪個新元素,但找不到任何對我有幫助的屬性。相關目標為 NULL。此時,對我來說唯一的解決方案似乎是在除 div 及其子節點之外的每個其他節點上添加 onfocus除了這個你還有其他的想法嗎?感謝您的幫助。延斯
查看完整描述

3 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

onmousedown之前活躍onblur


div.addEventListener('mousedown', function(event) {

   event.preventDefault();

   event.stopPropagation();

});


查看完整回答
反對 回復 2023-08-05
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

當 onblur 運行時,它將隱藏 div,因此當要進行單擊時,它不會在 div 上觸發,因為 div 是不可見的。所以 :


 // use the following global variable

   var mytimer = null;

  

  function newOnBlur()

  {

     mytimer = setTimeout(YourCurrentOnBlurFunctionWihoutParentheses,150);

  }

  

  // clearTimeout in the first line of your click function

  function newOnClick()

  {

     clearTimeout(mytimer);

     //  rest of your click event

  }


查看完整回答
反對 回復 2023-08-05
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

全局變量看起來有點難看,但這似乎是做到這一點的唯一方法。


對于那些有同樣問題的人: setTimeout 在我的例子中有點迂腐。我必須以這種方式設置它,否則永遠不會使用超時:


var timer = null;

function timer_function(divname)

{

? ? timer = setTimeout(function(){document.getElementById(divname).style.display='none'}, 200);

}

如果超時被清除,我必須重新聚焦到文本框,否則模糊功能將不再起作用。


感謝您的時間和幫助。:)


查看完整回答
反對 回復 2023-08-05
  • 3 回答
  • 0 關注
  • 336 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號