如何锁定textarea的第一个单词?

时间:2012-03-14 15:21:10

标签: javascript jquery focus textarea

基本上我需要创建一个字符有限的textarea,但在开头只有一个单词,它们不能改变。

它必须是textarea的一部分,但我不希望用户能够删除它或编辑它。

我原以为我可以使用blur()创建一个JQuery函数来阻止用户进行退格,但我还需要阻止他们选择该单词并删除它。

更新 我写了这个JQuery似乎很棒!但是我喜欢下面的解决方案,因为它不需要Javascript。

<script type="text/javascript">
    var $el = $("textarea#message_create_body");
    $el.data('oldVal', $el.val());

    $el.bind('keydown keyup keypress', function () {
        var header = "Header: ";
        var $this = $(this);
        $this.data('newVal', $this.val());
        var newValue = $this.data("newVal");
        var oldValue = $this.data("oldVal");

        // Check to make sure header not removed
        if (!(newValue.substr(0, header.length) === header)) {
            $(this).val(oldValue);
        } else {
            $(this).data('oldVal', $(this).val());
        }
    });
</script>

3 个答案:

答案 0 :(得分:8)

如果您只想让textarea显示前缀,您可以使用标签,更改位置,并缩进textarea内容。用户不会注意到差异。

您可以在此处查看其工作原理:http://jsfiddle.net/FLEA3/

答案 1 :(得分:3)

将这个单词作为文本框旁边的标签怎么样?如果用户无法编辑文本框中的部分文本,则可能会造成混淆。

答案 2 :(得分:1)

如果您只是提醒用户他在textarea输入的内容将以“前缀”提交然后

,那会不会更好
  • 在textarea
  • 之前将前缀显示为标签
  • 在提交
  • 之前将前缀添加到输入的文本中