Sostituire il punto con la virgola sull'evento keydown di una textbox in JavaScript
Questo JavaScript in jQuery, permette di intercettare i caratteri digitati in una input box html e sostituire automaticamente il carattere punto con la virgola tramite l'evento keydown
JavaScript
$("#idDellaTextbox").keydown(function(event) {
var key = event.which;
if (key === 110 || key === 190) { // codice carattere punto
var obj = $(this);
obj.val(obj.val() + ',');
event.preventDefault();
}
});
Per funzionare richiede jQuery.
Il codice 190 corrisponde al punto sulla tastiera, mentre il 110 a quello sul tastierino numerico
Il codice 190 corrisponde al punto sulla tastiera, mentre il 110 a quello sul tastierino numerico
Ho aggiornato lo script per usare l'evento keydown in quanto l'evento keypress è deprecato.
Versione in JavaScript puro
Questa è una versione in Vanilla JS, preferibile rispetto al precedente in quanto non richiede la libreria jQueryJavaScript
document.getElementById("idDellaTextbox").addEventListener("keydown", function(event) {
var key = "which" in event ? event.which : event.keyCode;
if (key === 110 || key === 190) { // codice carattere punto
event.target.value += ",";
event.preventDefault();
}
});
Demo
Scrivi un numero con il punto
Versione migliorata
Questa versione in Vanilla JS è un miglioramento della precedente in quanto gestisce il carattere da sostituire in qualunque posizione del testo (non solo alla fine)JavaScript
document.getElementById("idDellaTextbox").addEventListener("keydown", function(event) {
var key = "which" in event ? event.which : event.keyCode;
if (key === 110 || key === 190) { // codice carattere punto
var replacement = ",";
if (this.selectionStart || this.selectionStart == '0') {
var start = this.selectionStart;
var end = this.selectionEnd;
var v = event.target.value;
event.target.value = v.substring(0, start) + replacement + v.substring(end, v.length);
// riposiziono il cursore
this.selectionStart = start + 1;
this.selectionEnd = start + 1;
} else {
// se non funziona il precedente lo posiziono alla fine
event.target.value += replacement;
}
event.preventDefault();
}
});
Demo 2
Scrivi un numero con il punto