我有這個input,當專注時打開一個select.
我想要的行為可以通過簡單的方式來實作,select但我希望進一步添加簡單select方式不允許的功能。簡單地說,當您關注“框”時,您可以查看選項,如果不關注則不能。
我嘗試使用一個狀態來實作這個邏輯,該狀態檢查是否是焦點div所在select的父級。input單擊輸入會按預期顯示選項,但是當我嘗試從串列中選擇一個選項時,在我可以選擇它之前,它select會被隱藏并且我無法選擇任何東西。
演示
有另一種方法嗎?
uj5u.com熱心網友回復:
問題是另一個可聚焦元素(select)獲得焦點。你無法避免這種情況,但你可以改變你對此的反應:你需要檢查導致模糊的元素是否是你的 div 的后代。如果是,則無需關閉選擇框。
將您的處理程式更改onBlur為:
const onBlur = ({ currentTarget, relatedTarget }) => {
if (!currentTarget.contains(relatedTarget)) {
setMenuActive(false);
}
};
分叉演示。請注意,我還將您的狀態更改為簡單的布林值而不是物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504129.html
標籤:javascript 反应 反应式 反应钩子
下一篇:切換li后洗掉的串列元素
