2012-07-13 3 views
0

Je travaille dans le courrier électronique CMS à l'aide de ckeditor.net. Lors de l'exécution, l'utilisateur peut changer le corps de l'email, je veux restreindre l'utilisateur en supprimant tous les mots spéciaux commençant par @@.Comment empêcher l'utilisateur de supprimer des mots avec des caractères spéciaux de la zone de texte

Voici exemple-

Email Alert! :<br /> 
<br /> 
**@@Comments**<br /> 
<br /> 
Please do not reply to this email. 

Je ne veux pas utilisateur de supprimer « @@ commentaires » mot et tous les caractères « @@ » dans d'autres modèles de courrier électronique. Pouvez-vous donner du code en JavaScript?

Lors de l'exécution, je remplace les mots "@@" par un paragraphe.

+1

Je ne suis pas sûr que ce est possible , essayez d'utiliser plusieurs zones de texte et le libellé readonly (@@ Comments) entre eux et utilisez les classes CSS appropriées, donc cela ressemblerait à 1 zone de texte. –

+0

bien il doit y avoir un moyen de le faire, je veux dire quand vous pouvez attraper le clavier et l'événement de clic de souris alors pourquoi ne pas vérifier là. Juste besoin d'aide supplémentaire – skhurams

Répondre

2

Je n'ai pas testé ce code (je l'ai juste créé dans cette réponse), mais voici ce que je ferais.

Sur la méthode keydown de saisie de texte, vous devez listen for the backspace key:

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; 
} 

Références

Detect Backspace

Get Caret Position

Cancel the keydown event

Questions connexes