当选择框选项具有焦点时,Javascript 事件不会触发

标签 javascript

当选择框选项获得焦点时,我试图让某些事情发生(写入 div)。从 jsfiddle 代码中,您可以看到我已经让它在事后工作了——也就是说,一旦选择了选项并且鼠标移回到现在关闭的选择框。当盒子打开时如何让它工作?

(如果重要的话,我有另一个函数绑定(bind)到在“更改”事件上触发的同一元素(选择框)。我想知道这是否是问题所在?)。

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/

最佳答案

我认为您的问题出在未显示的 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/

关于当选择框选项具有焦点时,Javascript 事件不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453202/

相关文章:

用于多人网页游戏的 JavaScript 或 Flash?

javascript - 类型 'replace' 上不存在属性 'IData' 。缺什么?

javascript - 如何替换文本区域字段中的最后一个字符?

javascript - 使用 jquery 替换用字符串替换数字

javascript - 如何在窗口调整大小时为等高子项重新加载 div

javascript - JQuery 无法正确访问放置在另一个元素(可拖动)上的可拖动元素

javascript - 正则表达式javascript如何检查aa_bb

javascript - react 链接不起作用

javascript - bxslider 自定义下一张幻灯片按钮

javascript - Ajax RSS 阅读器