我需要一个输入文本框,我可以在其中单击并且光标开始闪烁,但用户无法更改其中的任何文本。
我尝试使用“readonly”或“disabled”属性,但它们不允许光标位于文本框内。所以,我正在考虑在普通文本框上用JavaScript实现的解决方案。有插件已经这样做了吗?我该如何实现呢?
编辑:感谢所有答案,但我想将textarea / input类型文本设置为不可编辑,但同时可以选择。在文本框中按 Ctrl + A 不起作用。是否可以获取更改的值和旧值并比较它们,然后如果值不同则返回false,但在所有其他情况下返回true,以便 Ctrl + A , Shift + end 等组合有效吗?答案 0 :(得分:3)
这样的事情:
<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;
}
答案 1 :(得分:1)
$(function(){
$("inputSelector").keydown(function(){ return false; });
});
答案 2 :(得分:0)
您不能依赖禁用<textarea>
作为用户输入,因为删除使用firebug或其他工具禁用任何类型的HTML或JavaScript是微不足道的。请记住,表单不仅限于您提供的字段,任何人都可以向页面提交任何数据。
无论如何,禁用的输入都不会随表格提交,请注意我的建议是不使用textarea 并打印出来。