2016-05-04 7 views
6

Bitte überprüfen Sie dies auf Google Chrome-Browser:keyUp Ereignis verhindert Pfeiltasten im Textfeld in Chrome

jQuery('#tien_cong').keyup(function(e) { 
 
    jQuery(this).val(jQuery(this).val().replace(".", ",")); 
 
    var sum = 0; 
 

 
    var tien_cong = jQuery('#tien_cong').val(); 
 
    tien_cong = tien_cong.replace(/,/g, ''); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="textfield" id="tien_cong" type="text" data-required="" data-type="text" name="tien_cong" placeholder="" value="" size="">

Ich versuche . zu ersetzen durch , wenn Benutzertypen Somethings mit . in einer Textbox .

Wenn der Benutzer im Chrome-Browser die linke Cursortaste auf der Tastatur drückt, kann er sich nicht bewegen.

enter image description here

Warum?

+1

Welche Chrome-Version verwenden Sie? – Dom

+0

Version 49.0.2623.112 m – John

+1

Ja, aber nicht mit Zurück-Taste, ist mit der linken Cursor-Taste in der Tastatur. Es passiert, weil, wenn Sie Chrom ersetzen, verlieren Sie die Position des Caret. Ich weiß nicht, wie ich das beheben soll. Chrome saugt wie immer. –

Antwort

3

Momentan wird der Eingang jedes Mal aktualisiert, wenn eine Taste gedrückt wird. Testen, ob das Zeichen ein '.' Vor dem Ersetzen wird verhindert, dass das Skript ausgeführt wird, wenn dies nicht erforderlich ist, und verhindert, dass der Cursor zurückgesetzt wird.

jQuery('#tien_cong').keyup(function(e) { 
 
    if(e.which === 190) { 
 
    jQuery(this).val(jQuery(this).val().replace(/\./g,",")); 
 
    }  
 
    
 
    var sum = 0; 
 

 
    var tien_cong = jQuery('#tien_cong').val(); 
 
    tien_cong = tien_cong.replace(/,/g, ''); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="textfield" id="tien_cong" type="text" data-required="" data-type="text" name="tien_cong" placeholder="" value="" size="">

0

Werke für mich auf Chrome 50. Aber trotzdem empfehle ich, dies zu ändern: ''

jQuery(this).val(jQuery(this).val().replace(/\./g,",")); 

wie sonst immer nur die erste wird ersetzt.

+0

Danke. Kannst du meinen Code ausprobieren? Es ändert alle ".", Nicht nur die erste. – John

+0

Wenn Sie eine * Zeichenfolge * als ersten Parameter übergeben, werden alle Instanzen ersetzt. Wenn Sie eine Regex übergeben, werden nur alle ersetzt, wenn Sie das Flag "g" verwenden. –

Verwandte Themen