【问题标题】:Javascript event doesn't fire when select box options have focusJavascript event doesn't fire when select box options have focus
【发布时间】:2014-10-16 16:08:58
【问题描述】:

我正在尝试在选择框选项具有焦点时发生若要发生的事情(写入987654324 @)。从 jsfiddle 代码中,您可以看到我已经让它在事后工作 - 也就是说,一旦选择了选项并将鼠标移回现在关闭的选择框。打开盒子后如何让它工作?

(以防万一,我有另一个函数绑定到同一个元素(选择框),该元素会触发“更改”事件。我想知道这是否是问题所在?)。

HTML

<div id="Hint"></div>
<div id='select-container'>
    <select name="parent_selection" id="parent_selection">
        <option selected="selected">-- Select 1st option --</option>
        <option value="option1">Option 1</option>
        <option value="option2">Option 2</option>
        <option value="option3">Option 3</option>
    </select>
    <select name="child_selection" id="child_selection">
        <option value="">-- Select 2nd option --</option>
    </select>
</div>

JavaScript

//Display hint for hovered selection in 1st dropdown
var elSelect_container, elHint; // Declare variables

elAppSelected = document.getElementById('parent_selection');
elHint = document.getElementById('Hint');

function Hint() {
    var elAppSelected = this.options[this.selectedIndex].value;

    if (elAppSelected === 'option1') {
        elHint.innerHTML = 'Good choice';
    }
    if (elAppSelected === 'option2') {
        elHint.innerHTML = 'Better choice';
    }
    if (elAppSelected === 'option3') {
        elHint.innerHTML = 'Best Choice!';
    }
}
    //Create event listener: mouseover calls Hint()
    elAppSelected.addEventListener('mouseover', Hint, false);

http://jsfiddle.net/rpt613/a8hxa1jm/30/

【问题讨论】:

标签: javascript


【解决方案1】:

我认为您的问题在于未显示的 onchange 事件。我将 addEventListener 更改为更改 vs mouseover 并且示例工作正常。我不确定你需要另一个 onchange 事件来做什么,但也许你可以将它们结合起来。

JavaScript:

//Display hint for hovered selection in 1st dropdown
var elSelect_container, elHint; // Declare variables

elAppSelected = document.getElementById('parent_selection');
elHint = document.getElementById('Hint');

function Hint() {
    var elAppSelected = this.options[this.selectedIndex].value;

    if (elAppSelected === 'option1') {
        elHint.innerHTML = 'Good choice';
    }
    if (elAppSelected === 'option2') {
        elHint.innerHTML = 'Better choice';
    }
    if (elAppSelected === 'option3') {
        elHint.innerHTML = 'Best Choice!';
    }
}
    //Create event listener: mouseover calls Hint()
    elAppSelected.addEventListener('change', Hint, false);         
  //elAppSelected.addEventListener('mouseover', Hint, false);

http://jsfiddle.net/a8hxa1jm/31/

【讨论】:

  • 感谢您的回复。您对我的代码的编辑确实有效,但这不是我想要的。我的错。我想我没有很好地解释这个问题。我追求的结果类似于工具提示。当我网站的用户悬停在选择框选项上时,我想向他们展示一些文本(在我的代码中的提示 div 中),我意识到我可以将标题属性附加到选项以实现相同的目的。或者使用像 qtip 或 Jquery Tooltip 这样的插件。如果我不能让自己的代码工作,我可能最终会这样做,但我很确定这里的所有专业知识都没有必要。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
相关资源
最近更新 更多