在JavaScript中,如何拥有一个只读文本区,并仍然获得onselect事件
In JavaScript how to have a readonly textarea and still get onselect events?
我注意到,如果我将textarea设置为'readonly'我不再得到onselect
事件。
var ta = document.createElement('textarea');
ta.readonly = true;
ta.onselect = function() { ... } // This one works only if the ta.readonly is commented out.
我需要文本区域是只读的,并在用户选择某个范围时得到通知。有人能帮忙吗?
动态调整文本区域的只读属性onfocus, onblur, onselect等,同时仍然总是接收onselect事件,这是没有直接的方法来做到这一点的。
如果你的目标是确保用户不能编辑/操作文本区域,那么我可能只是离开文本区域为非只读(接收选择事件),但通过使用preventDefault()在输入事件中阻止所有用户输入,像这样:
var ta = document.createElement('textarea');
// prevent user input
ta.addEventListener('cut', function(e) { e.preventDefault(); }, false);
ta.addEventListener('copy', function(e) { e.preventDefault(); }, false);
ta.addEventListener('paste', function(e) { e.preventDefault(); }, false);
ta.addEventListener('keydown', function(e) { e.preventDefault(); }, false);
// listen for user selections
ta.addEventListener('select', function() {
// function logic...
}, false);
用<div>
怎么样?你仍然可以在这里选择文本,它是不可编辑的,因此是只读的
您可以创建一个循环函数来持续检查窗口文本选择。如果它检测到所选文本的长度已达到某种限制,它将执行您认为合适的任何操作。
像这样:
function getSelectedText() {
var txt = '';
if (window.getSelection) {
txt = window.getSelection();
}
else if (document.getSelection) // FireFox
{
txt = document.getSelection();
}
else if (document.selection) // IE 6/7
{
txt = document.selection.createRange().text;
}
return txt;
}
function doSomething() {
var txt = getSelectedText();
// Do something with txt variable, like txt.length
}
setInterval('doSomething()',500);
您还需要确保选择来自所需的文本区域。
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- jQuery Datepicker,事件 AFTER select,而不是 “onSelect”
- onSelect日期picker事件不上升
- 我如何使用jQueryUI日期picker onSelect,但也在我的主干视图的变化事件
- 如何绕过提交日期选择器的onselect事件
- DatePicker OnSelect事件没有'不起作用
- 如何为输入框触发onSelect事件?
- 骨干队列测试:在日期选择器上触发onSelect事件
- 在JavaScript中,如何拥有一个只读文本区,并仍然获得onselect事件
- CodeMirror OnSelect事件不起作用
- JQuery Datepicker中的onSelect事件没有'似乎没有开火