2015-05-07 11 views
7

Mam element wejściowych textarea,Wymień char onkeypress

Jeśli użytkownik wpisze "@" Chcę go zastąpić @ [someTextHere].

Używam zdarzenia naciśnięcia klawisza JQuery, ale nie udało mi się uzyskać tego, co chcę, ciągle otrzymuję "@" na końcu ciągu, tj. [someTextHere] @.

Czy to możliwe?

mój kod:

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

pomoc będzie mile widziane.

+0

Dlaczego nie wystarczy powiedzieć:. $ ('# Post-txt') val (str + '[TEKST]'); – Masterakos

+0

@ Tsalikidis Twoje rozwiązanie nie działa. –

+0

Nie twierdziłem, że to rozwiązanie ... Właśnie zapytałem, dlaczego jest to skomplikowane, używając podłańcucha .. – Masterakos

Odpowiedz

4

to dlatego, że dodaje znak po wykonaniu funkcji. Możesz zapobiec dodaniu znaku i dodać go do kodu.

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

Słodko! Wielkie dzięki! –

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

Spróbuj tego ...

+0

Jeśli kursor nie znajduje się w ostatniej pozycji w polu wprowadzania, to rozwiązanie nie będzie działać poprawnie, ponieważ na końcu dodaje tylko [List do zamiany]. –