Javascript 如何限制用户从文本框中删除带有特殊字符的单词
我正在使用ckeditor.net在电子邮件CMS中工作。 在运行时,用户可以更改电子邮件的正文,我想限制用户删除所有以@开头的特殊单词 下面是一个例子-Javascript 如何限制用户从文本框中删除带有特殊字符的单词,javascript,asp.net,restrict,ckeditor.net,Javascript,Asp.net,Restrict,Ckeditor.net,我正在使用ckeditor.net在电子邮件CMS中工作。 在运行时,用户可以更改电子邮件的正文,我想限制用户删除所有以@开头的特殊单词 下面是一个例子- Email Alert! :<br /> <br /> **@@Comments**<br /> <br /> Please do not reply to this email. 电子邮件警报!: **@@评论** 请不要回复此电子邮件。 我不希望用户删除“@@comments”wor
Email Alert! :<br />
<br />
**@@Comments**<br />
<br />
Please do not reply to this email.
电子邮件警报!:
**@@评论**
请不要回复此电子邮件。
我不希望用户删除“@@comments”word和其他电子邮件模板中的所有“@@”字符。
你能给出JavaScript代码吗
在运行时,我用一些段落替换“@@”单词。我还没有测试这段代码(只是将其自由格式转换成这个响应),但下面是我要做的 在文本输入的向下键方法上,您需要: 参考资料
我不确定这是否可行,请尝试在它们之间使用几个文本区域和只读标签(@@Comments),并使用适当的CSS类,这样它看起来像一个文本框。肯定有办法做到这一点,我的意思是,当您可以捕获“向下键”和“鼠标单击”事件时,为什么不选中它呢。只是需要更多的帮助
var input = document.getElementById('myInput');
input.onkeydown = function() {
var key = event.keyCode || event.charCode;
// Detect Backspace (8) & Delete (46) keys
if( key == 8 || key == 46 ){
var caretPos = getCaretPos(input);
// Read backward from the caret position
// until you hit a space or index 0:
while ( (input.value[caretPos] != " ") && (caretPos > 0) ){
caretPos--;
}
// Once you hit the space or index 0, read forward two characters
// to see if it === "@@". If both chars are "@", cancel
// the keydown event. You should probably do some bounds checking
// here. Could also be done with String.subtring
if ( input.value[(caretPos + 1)] == "@" &&
input.value[(caretPos + 2)] == "@" )
{
return false;
}
}
};
function getCaretPos(input) {
// Internet Explorer Caret Position (TextArea)
if (document.selection && document.selection.createRange) {
var range = document.selection.createRange();
var bookmark = range.getBookmark();
var caret_pos = bookmark.charCodeAt(2) - 2;
} else {
// Firefox Caret Position (TextArea)
if (input.setSelectionRange)
var caret_pos = input.selectionStart;
}
return caret_pos;
}