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