使文本区域的第一部分变为只读

时间:2018-10-01 20:52:47

标签: javascript jquery html

我在html中有一个textarea元素,如下所示:

<textarea id="txtarea">some text</textarea>

我希望用户能够将文本添加到文本区域,但可以使“某些文本”为只读/不可编辑。

这是我最接近使用jquery解决方案的地方:

$('#txtarea').text[0]('t');
$('#txtarea').text[0]('x'); //etc

这不起作用,因为text0不是语法错误。 有人知道如何更改文本区域或mabye的第一个单词,这提供了我没有想到的另一种解决方案吗?谢谢 编辑:

我不只希望使用默认的文本区域文字,而是将无法使用

2 个答案:

答案 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>