2010-04-15 7 views
3

Кто-нибудь знает, возможно ли защитить подстановку строк в текстовом поле?Защита от записи jquery в textarea для подстановочных знаков

HTML:

<textarea name="mail_text" id="mail_text"> 
{salutation} {recipient}, 
thanks for your email. 
Regards 
{username} 
</textarea> 

Я хотел бы поймать, когда кто-то пытается изменить один из групповых символов: {приветствием}, {получатель} и {имя пользователя}

$("textarea").keyup(function() { 
    var val = $(this).val(); 
    //protect the wildcards 
}); 

Спасибо!

+0

Почему это должно быть все в текстовой области, разве вы не можете их отделить? – ant

ответ

2

Вы не можете практически «защитить» часть текстового поля. На самом деле вы можете попытаться заблокировать ввод нажатий, когда курсор находится внутри шаблона {...}, но есть так много других способов его редактирования, например. выберите диапазон, затем удалите/замените, вырежьте/скопируйте/вставьте, перетащите и перетащите ...

Возможно, лучше просто отслеживать значение 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> 
0

Сделать все проще.
Создайте два textareas: один с информацией, где пользователь может написать («спасибо за ваш адрес электронной почты. С уважением» и т. Д.). И еще один с подстановочными знаками или конечными результатами, если это возможно. Вы можете изменить второй текст textareas сразу после пользовательского типа (используйте keydown или keyup event).