似乎一个元素的onBlur正在“覆盖”另一个元素的onclick

问题描述 投票:4回答:3

我有两个要素:

<input type="text" name="pmTo" id="pmTo" onkeyup="offerSuggs('none');" onfocus="showSelect();" onblur="hideSelect();" />

和一个动态创建的(这是自动建议程序的全部):

$suggString .= '<div name="'.$value.'" id="'.$value.'" class="suggMouseOver" onmouseover="highlightDivs(this);" onmouseout="blurDivs(this);" onclick="fillInput(this);">'.$value.'</div>';

好,然后有事件函数分别对应于输入元素的onblur和div元素的onclick

function hideSelect() {
            offerSuggs('checkFinal');
            document.getElementById('nameSugg').style.display="none";
            }


function fillInput(elemName) {
            document.getElementById('pmTo').value=elemName.id;
            }

编辑:如何获得onclick在他们单击的元素上正确触发,而没有onblur事件先隐藏div从而使onclick失去意义?但是,当文本框失去焦点时,我仍然想保留建议div消失的功能。

javascript onclick dom-events onblur
3个回答
9
投票

我认为您的答案很短,因为您的问题令人困惑。大概您有一个输入,当重点关注时,它会根据输入到输入中的字符显示一个建议列表。


3
投票

接受的答案可以作为一种快速解决方案,但是您可以依靠setTimeout来假设用户在放开鼠标之前只会持续按下n毫秒以内(只是想让某人犹豫一下而已) 。为了更确定单击是否成功,您可以设置更长的超时时间,但这意味着您的可隐藏元素在模糊之后将保持可见的时间更长。


0
投票

解决方案非常简单-您只需要使用mousedown

© www.soinside.com 2019 - 2024. All rights reserved.