我正在使用HTML / JavaScript创建一个终端窗口,并使用textarea进行输入。我想阻止删除textarea中文本的各个部分。例如,如果我在textarea“C:\>随机代码”中有文本,我想阻止用户删除“C:\>”文本。这可以使用javascript吗?
答案 0 :(得分:4)
假设jQuery,这个脚本将监听击键,如果找不到任何所需的文本(即:用户试图删除它),它将自己添加回来:
var requiredText = 'C:>';
$('textarea').on('input',function() {
if (String($(this).val()).indexOf(requiredText) == -1) {
$(this).val(requiredText);
}
}
答案 1 :(得分:3)
你不能使textarea的一部分不可编辑(只有整个控件)。
您可以使用各种JavaScript技巧(如果用户想要执行您不想允许的操作,则使用event.preventDefault侦听按键事件和取消事件)
另一个解决方案是,不是让输入的不可删除部分,而是自动将预定义的字符串附加(或预先添加)到用户输入(并以某种方式为用户方便地显示它)。
更新
所以,我的解决方案看起来像这样:
var requiredText = 'C:>';
$('textarea').on('keyup',function(event) {
if (GetSelectionStart(this) < requiredText.length){
event.preventDefault();
event.stopPropagation();
}
}
其中GetSelectionStart
是一个告诉所选文本开头的函数(或插入位置,如果没有选择文本范围)。对于某些可能的实现,请参见e。 G。 Caret position in textarea, in characters from the start
此函数假定requiredText始终位于字符串的开头。但当然,它可以适用于更复杂的场景。