我在html中有一个textarea元素,如下所示:
<textarea id="txtarea">some text</textarea>
我希望用户能够将文本添加到文本区域,但可以使“某些文本”为只读/不可编辑。
这是我最接近使用jquery解决方案的地方:
$('#txtarea').text[0]('t');
$('#txtarea').text[0]('x'); //etc
这不起作用,因为text0不是语法错误。 有人知道如何更改文本区域或mabye的第一个单词,这提供了我没有想到的另一种解决方案吗?谢谢 编辑:
我不只希望使用默认的文本区域文字,而是将无法使用
答案 0 :(得分:1)
您不能真正阻止用户编辑文本区域内的文本。这也会造成混乱(真的不知道您的用例)。
您可以使用两个文本区域,一个用于现有的 文本(只读),另一个用于 new 文本。
如果您再次希望将所有文本都保留在同一文本区域中,则另一个方法是将 old 文本保留在变量中,然后在使用退出文本区域时(模糊事件),请确保 new 文本开始于 old 文本。如果不执行任何操作(将其重置为旧文本,将焦点返回到控件等)
答案 1 :(得分:1)
我建议在keyup
上添加一个函数,以检查.val()
中是否存在.text()
。如果找不到,请将.val()
等于设置为.text()
。由于.text()
是在页面加载时设置的,并且.val()
在键入时会更新,因此您可以向<textarea>
添加新文本,但始终会添加返回原始文本(如果已删除)。
下面可以看到,用户可以自由键入新文本,但是如果<textarea>
不包含字符串some text
,则<textarea>
将被更新。包含它:
$('#txtarea').on("keyup", function() {
if ($(this).val().indexOf($(this).text()) === -1) {
$(this).val($(this).text());
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="txtarea">some text</textarea>