是否有人知道保护字符串通配符在textarea中更改的可能性?
HTML:
<textarea name="mail_text" id="mail_text">
{salutation} {recipient},
thanks for your email.
Regards
{username}
</textarea>
当有人试图更改其中一个通配符时,我想抓住: {salutation} , {recipient} 和 {username}
$("textarea").keyup(function() {
var val = $(this).val();
//protect the wildcards
});
谢谢!
答案 0 :(得分:2)
你实际上不能“保护”textarea的一部分。天真地,当光标位于{...}
模式内时,您可以尝试阻止输入按键,但是还有很多其他方式可以编辑,例如。选择范围然后删除/替换,剪切/复制/粘贴,拖放...
最好只监控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>
答案 1 :(得分:0)
让一切变得更轻松 创建两个 textareas :一个包含用户可以写的信息(“感谢您的电子邮件。问候。”等)。如果可能的话,另一个带有通配符或最终结果。您可以在用户输入后立即修改第二个 textareas (使用 keydown 或 keyup 事件)。