Jistě se Vám již stalo, že na webu píšete do inputu částku 1000000 a zpětně dumáte, zda Vám tam nechybí jedna 0 či naopak nepřibívá. Bylo by skvělé psát 1 000 000, ale pak zase při ukládání do databáze musíte vyrušit ty mezery. S touto situací pomůže Javascript respektive jQuery.
Kód zní:
/* doplneni tecek za tisice v inputech */
//krok 1 - Vynut, aby uzivatel psal jen cisla.
$(".input_cislo").keydown(function (e) {
// Allow: backspace, delete, tab, escape, enter and .
if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
// Allow: Ctrl+A, Command+A ; delete - 46 , backspace - 8
(e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||
// Allow: home, end, left, right, down, up
(e.keyCode >= 35 && e.keyCode <= 40)) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault();
}
});
//krok 2 doplni mezeru za tisice (zdroj: http://blog.tompawlak.org/number-currency-formatting-javascript )
$(".input_cislo").keyup(function (e) {
var bez_mezer = $( this ).val().replace(/[ ]/g, ""); //mezery vracim do cisla, aby po dalsim kliku fungovalo to doplneni mezer dobre
$( this ).val( bez_mezer );
var hodnota = $( this ).val();
var s_mezerami = hodnota.replace(/(d)(?=(d{3})+(?!d))/g, "$1 "); //ta mezera za $1 je oddelovac
$( this ).val( s_mezerami );
});
Pokud máte tento kód, tak již stačí pouze přidat třídu "input_cislo" k požadovanému inputu a to například takto:
PHP - Ostatní
JavaScript - Úvod do JavaScriptu
JavaScript - Příklady v JavaScriptu
(x) HTML - Úvod do HTML
CSS - Základy CSS