繁体   English   中英

HTML / JavaScript:如何制作a的默认文本 <textarea> 不可删除?

[英]HTML/JavaScript: How to make default text of a <textarea> undeletable?

有没有办法让<textarea>输入的默认文本被用户取消删除? 例如,如果我们有这样的<textarea>

<textarea>I like/dislike this site because</textarea>

用户应该能够完成“我喜欢/不喜欢这个网站因为”句子,但永远无法删除这部分。

我知道这个问题有更简单的方法,但我被要求这样做。 此外,目标网站使用原型javascript框架,因此它必须涉及原型或没有框架。 jQuery无法使用,因为它会导致与原型冲突。

提前谢谢了。

你可以让它看起来像是textarea的一部分,即使它不是。

简单的jsfiddle示例来演示这个想法

我会假装它。 它很脏但你无法删除默认文本: http//jsfiddle.net/2EMkF/3/

function $(id) {return document.getElementById(id);}
$('s').addEventListener('click', function() {
    $('t').setSelectionRange(33, 33)
    $('t').focus();
});
$('t').addEventListener('keyup', function() {
    if($('t').value.substring(0, 33) != ' '.times(33)) {
            $('t').value = ' '.times(Math.max(
                33, $('t').value.firstspace())
            )
            + $('t').value.fromnospaces();
            $('t').setSelectionRange(33,33);
    }
});

function t() {
    if(this.selectionStart < 33) this.setSelectionRange(33,33);
}

$('t').addEventListener('keyup', t);
$('t').addEventListener('click', t);

String.prototype.times = function(n) {
    var r = "";
    for(var i = 0; i < n; i++) r += this;
    return r;
}

String.prototype.firstspace = function() {
    for(var i = 0; i < this.length; i++)
        if(this[i] != ' ')
            return i;
    return -1;
}

String.prototype.fromnospaces = function() {
    return this.substring(this.firstspace());
}

如果用户更改后该代码不存在,此代码会将默认文本返回到文本字段的开头:

<script type="text/javascript">
function fixText()
{
    var textAreaElement = document.getElementById("mytextarea");
    var searchPhrase = "I like/dislike this site because";
    if(textAreaElement)
    {
        if(textAreaElement.value.indexOf(searchPhrase) != 0)
        {
            textAreaElement.value = searchPhrase + " " + textAreaElement.value
        }
    }
}
</script>

<textarea id="mytextarea" onblur="fixText();" onchange="fixText();">I like/dislike this site because</textarea>

我在一两分钟左右把它扔到一起,它有一些明显的缺陷,例如如果有人只删除了一些默认文本,他们可能会得到一个奇怪的结果,比如“我喜欢/不喜欢这个网站,因为我喜欢这个网站,因为它很好“。 但我相信你可以操纵它以使其更有效。 像这样的东西可能与pimvdb的答案结合起来。

我喜欢Elian Ebbing的答案,如果你的雇主允许你这样做的话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM