簡體   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