Вы не можете практически «защитить» часть текстового поля. На самом деле вы можете попытаться заблокировать ввод нажатий, когда курсор находится внутри шаблона {...}
, но есть так много других способов его редактирования, например. выберите диапазон, затем удалите/замените, вырежьте/скопируйте/вставьте, перетащите и перетащите ...
Возможно, лучше просто отслеживать значение 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>
Почему это должно быть все в текстовой области, разве вы не можете их отделить? – ant