javascript - 如何编写允许不可编辑文本框的 JavaScript 函数?

标签 javascript jquery jquery-plugins dom-events

我需要一个输入文本框,我可以在其中单击并且光标开始闪烁,但用户无法更改其中的任何文本。

我尝试使用“只读”或“禁用”属性,但它们不允许光标位于文本框内。因此,我正在考虑一种在普通文本框上用 JavaScript 实现的解决方案。是否有一个插件已经可以做到这一点?我该如何实现这个?

编辑:感谢您的所有答案,但我想使文本区域/输入类型文本不可编辑但同时可选择。在文本框中按 Ctrl + A 不起作用。是否可以获取更改后的值和旧值并进行比较,如果值不同则返回 false,但在所有其他情况下返回 true,以便 Ctrl + AShift + end 等组合有效吗?

最佳答案

类似这样的事情:

<textarea onkeydown="javascript:return false;"></textarea>

就可以了。 (jsfiddle)

如果您愿意,您也可以在运行时执行此操作:

<textarea class="readonly"></textarea>

$(".readonly").keydown(function() false);

onkeydown 回调捕获击键事件并使用 return false; 取消它们。

根据您想要执行的操作,您可能希望阻止其他类型的事件,因为例如仍然可以使用鼠标更改内容。

您的回调函数可以根据击键类型接受或取消事件。例如,仅启用 ctrl-a 和 ctrl-c(使用 jQuery):

function keydown(e) {
  if(!e.ctrlKey) return false; // Cancel non ctrl-modified keystrokes
  if(e.keyCode == 65) return true;// 65 = 'a'
  if(e.keyCode == 67) return true;// 67 = 'c'
  return false;
}

关于javascript - 如何编写允许不可编辑文本框的 JavaScript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6997917/

相关文章:

javascript - 使用附近的 0.05 的自定义舍入数字

javascript - jquery如何获取输入值

javascript - JW Player 6 控制栏

javascript - 我应该使用哪个 : json-jquery or json2. js?

javascript - Fancybox 不是函数

javascript - 如何在不使用 Web 服务器的情况下加载 React/React Router 站点?

javascript - 如何评论 ReSharper 以便 Intellisense 显示文档?

javascript - 包装内的固定侧边菜单

javascript - 使用键盘悬停

javascript - 内容安全策略 'unsafe-eval' : How to avoid using eval() in javascript jquery. timer.js?