Onselect 事件不会在 div 上触发

Posted

技术标签:

【中文标题】Onselect 事件不会在 div 上触发【英文标题】:Onselect event doesn't fire on div 【发布时间】:2010-09-28 14:31:18 【问题描述】:

我无法触发附加到 元素的 onselect 事件处理程序。是否可以强制 发出 select 事件?

【问题讨论】:

【参考方案1】:

根据w3schools,onSelect 只定义在 input 和 textarea 对象上。

您可以尝试在当前窗口/文档中捕捉MouseUp event 和retrieve the selected text。

【讨论】:

【参考方案2】:

您可以通过使用onMouseUp 事件来实现您想要的。见下文...

<html>
    <body>
        <div id="container" style="border: 1px solid #333" contentEditable="true" onMouseUp="checkMe()">Type text    here</div>

    </body>
    <script language="javascript">
    function checkMe() 
        var txt = "";

        if (window.getSelection) 
                txt = window.getSelection();
        
        else if (document.getSelection) 
            txt = document.getSelection();
         else if (document.selection) 
            txt = document.selection.createRange().text;
        

        alert("Selected text is " + txt);
    
    </script>
</html>

【讨论】:

这或多或少是我正在寻找的,但它没有考虑用户使用键盘扩展或移动选择的可能性。但是,将相同的逻辑绑定到 onKeyUp 可能会起作用。【参考方案3】:

使用OnClick

:select 仅适用于某些表单元素。

【讨论】:

以上是关于Onselect 事件不会在 div 上触发的主要内容,如果未能解决你的问题,请参考以下文章

onSet 函数不会在 div 上触发

JS事件 内容选中事件(onselect)选中事件,当文本框或者文本域中的文字被选中时,触发onselect事件,同时调用的程序就会被执行。

easyui combobox setValue方法不能触发onSelect事件

easyui 复选框 onClickRow事件与onSelect事件与onCheck事件

p:日历 onselect/onchange 未触发

easyui-combox:onselect 与 onchange 两个事件的比较