3

我正在用 HTML/JavaScript 制作一个终端窗口,并使用文本区域进行输入。我想防止 textarea 中的文本部分被删除。例如,如果我在文本区域“C:\>Random Code”中有文本,我想阻止用户删除“C:\>”文本。这可能使用javascript吗?

4

2 回答 2

4

假设是 jQuery,这个脚本将监听击键,如果找不到任何所需的文本(即:用户试图删除它),它会立即将自己添加回那里:

var requiredText = 'C:>';
$('textarea').on('input',function() {
    if (String($(this).val()).indexOf(requiredText) == -1) {
        $(this).val(requiredText);
    }
}
于 2013-08-19T12:02:04.223 回答
3

您不能使 textarea 的一部分不可编辑(仅整个控件)。

您可以使用各种 JavaScript 技巧(如果用户想要做您不想允许的事情,则使用 event.preventDefault 监听按键事件和取消事件)

另一种解决方案是,代替输入的不可删除部分,自动将预定义的字符串附加(或前置)到用户输入(并以某种方式方便地为用户显示)。

更新:

所以,我的解决方案如下所示:

var requiredText = 'C:>';
$('textarea').on('keyup',function(event) {
    if (GetSelectionStart(this) < requiredText.length){
event.preventDefault();
event.stopPropagation();
}

}

WhereGetSelectionStart是一个函数,它告诉所选文本的开头(或插入符号位置,如果没有选择文本范围)。对于一些可能的实现,请参见例如文本区域中的插入符号位置,从开头开始的字符

此函数假定 requiredText 始终位于字符串的开头。但当然,它可以适应更复杂的场景。

于 2013-08-19T12:01:34.830 回答