2015-05-07 9 views
7

Ho un elemento di input textarea,Sostituire char OnKeyPress

Se l'utente digita "@" Voglio sostituirlo con @ [someTextHere].

Sto usando l'evento keypress di JQuery, ma non sono riuscito a ottenere quello che voglio, continuo a ricevere il "@" alla fine della stringa, I.e. [SomeTextHere] @.

È possibile?

My Code:

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    </head> 

    <body> 
     <textarea id="post-txt"></textarea> 
    </body> 
</html> 

<script> 
    $('#post-txt').keypress(function(event){ 
     var str = $('#post-txt').val(); 

     if(String.fromCharCode(event.which) == '@'){ 
      $('#post-txt').val(str.substring(0,str.length) + '[TEXT]'); 
      } 
    }) 
</script> 

assistenza sarebbe apprezzato.

+0

Perché non basta dire:. $ ('# Post-txt') val (str + '[TESTO]'); – Masterakos

+0

@Tsalikidis La tua soluzione non funziona. –

+0

Non ho sostenuto che sia una soluzione ... Ho solo chiesto perché complicare l'uso della sottostringa .. – Masterakos

risposta

4

è perché aggiunge il carattere dopo l'esecuzione della funzione. È possibile impedire l'aggiunta del carattere e aggiungerlo nel codice.

if(String.fromCharCode(event.which) == '@'){ 
    event.preventDefault() 
    $('#post-txt').val(str + '@[TEXT]'); 
} 
+0

Dolce! Molte grazie! –

-1
$(document).find('input').keypress(function(evt){ 
     if(evt.which==50){ 
      $(this).val($(this).val()+'[Letter to replace]'); 
      evt.preventDefault(); 
     } 
    }); 

Prova questo ...

+0

Se il cursore non si trova nell'ultima posizione nella casella di input, questa soluzione non funzionerà correttamente poiché aggiunge solo la [Lettera da sostituire] alla fine. –

Problemi correlati