2016-05-04 8 views
6

Si prega di controllare questo sul browser Google Chrome:evento KeyUp impedisce tasti freccia nel campo di testo 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="">

cerco di sostituire . da , quando utente digita sulla quarantina con . in una casella di testo .

Nel browser Chrome, quando l'utente preme il tasto cursore sinistro sulla tastiera , non può spostarsi.

enter image description here

Perché?

+1

Quale versione di Chrome stai utilizzando? – Dom

+0

Versione 49.0.2623.112 m – John

+1

Sì, ma non con il pulsante Indietro, è con il tasto cursore sinistro nella tastiera. Succede perché quando si sostituisce chrome si perde la posizione del cursore. Non so come risolverlo. Chrome fa schifo, come al solito. –

risposta

3

In questo momento l'input viene aggiornato ogni volta che viene premuto un tasto. Test per vedere se il personaggio è un '.' prima di sostituire impedirà lo script di funzionare quando non è necessario, e impedisce il reset del cursore.

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

per me funziona su Chrome 50. Ma comunque vi consiglio di cambiare questo: ''

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

altrimenti sempre solo il primo viene sostituito

+0

Grazie. Puoi provare il mio codice? Cambia tutto il ".", Non solo il primo. – John

+0

Se si passa una * stringa * come primo parametro, verranno sostituite tutte le istanze. Se passi una regex, la sostituirà solo se usi il flag 'g'. –

Problemi correlati