用于通配符的textarea中的jquery写保护

用于通配符的textarea中的jquery写保护,jquery,textarea,protection,data-protection,Jquery,Textarea,Protection,Data Protection,有人知道在文本区域中保护字符串通配符不被更改的可能性吗 HTML: 谢谢 让一切变得更容易。 创建两个文本区域:其中一个包含用户可以写入的信息(“感谢您的电子邮件。问候。”等)。如果可能的话,再加一个通配符或最终结果。您可以在用户类型之后立即修改第二个文本区域(使用keydown或keyup事件)。您实际上无法“保护”文本区域的一部分。当光标位于{…}模式中时,您可能会尝试阻止输入按键,但有许多其他方法可以对其进行编辑,例如选择范围,然后删除/替换、剪切/复制/粘贴、拖放 最好只是监视texta

有人知道在文本区域中保护字符串通配符不被更改的可能性吗

HTML:

谢谢

让一切变得更容易。

创建两个文本区域:其中一个包含用户可以写入的信息(“感谢您的电子邮件。问候。”等)。如果可能的话,再加一个通配符或最终结果。您可以在用户类型之后立即修改第二个文本区域(使用keydown或keyup事件)。

您实际上无法“保护”文本区域的一部分。当光标位于
{…}
模式中时,您可能会尝试阻止输入按键,但有许多其他方法可以对其进行编辑,例如选择范围,然后删除/替换、剪切/复制/粘贴、拖放

最好只是监视textarea的值,并在该值出现错误时在其下方显示警告,例如:

<textarea id="mail_text">...</textarea>
<div id="mail_text_warning"></div>

<script type="text/javascript">
    function checkMailText() {
        var tokens= ['username', 'recipient', 'salutation'];
        var value= $('#mail_text').val();
        var problems= [];

        $.each(tokens, function() {
            if (value.split('{'+this+'}').length!==2)
                problems.push('Please ensure there is one and only one {'+this+'} token present in the text');
        });
        matches= value.match(/\{[^\}]*\}/g);
        if (matches!==null) {
            $.each(matches, function() {
                for (var i= tokens.length; i-->0;)
                    if ('{'+tokens[i]+'}'===this)
                        return;
                problems.push('Token '+this+' is not known');
            });
        }

        $('#mail_text_warning').text(problems.join('. '));
    }
    setInterval(checkMailText, 500);
</script>
。。。
函数checkMailText(){
var标记=['username','recipient','saltation'];
var值=$('#mail_text').val();
var问题=[];
$.each(令牌、函数(){
if(value.split('{'+this+'}').length!==2)
push('请确保文本中只存在一个{'+this+'}标记');
});
matches=value.match(/\{[^\}]*\}/g);
如果(匹配!==null){
$.each(匹配,函数(){
对于(变量i=tokens.length;i-->0;)
if('{'+tokens[i]+'}'==this)
返回;
问题。推送('Token'+this+'未知');
});
}
$('#mail_text_warning').text(problems.join('.');
}
设置间隔(checkMailText,500);

为什么必须全部在文本区,您不能将它们分开吗?
$("textarea").keyup(function() {
  var val = $(this).val();
  //protect the wildcards
});
<textarea id="mail_text">...</textarea>
<div id="mail_text_warning"></div>

<script type="text/javascript">
    function checkMailText() {
        var tokens= ['username', 'recipient', 'salutation'];
        var value= $('#mail_text').val();
        var problems= [];

        $.each(tokens, function() {
            if (value.split('{'+this+'}').length!==2)
                problems.push('Please ensure there is one and only one {'+this+'} token present in the text');
        });
        matches= value.match(/\{[^\}]*\}/g);
        if (matches!==null) {
            $.each(matches, function() {
                for (var i= tokens.length; i-->0;)
                    if ('{'+tokens[i]+'}'===this)
                        return;
                problems.push('Token '+this+' is not known');
            });
        }

        $('#mail_text_warning').text(problems.join('. '));
    }
    setInterval(checkMailText, 500);
</script>