Grazie per la risposta, non capisco solo il tuo tono livemente polemico, ma sicuramente mi sto sbagliando...
Sì, anche a me non piacciono quei "trucchi da baraccone" come li chiami tu, infatti vorrei adottare una soluzione più pulita.
Col tuo codice l'utente quando scrive 0, gli viene corretto in 1 e questa cosa non mi piace.
Così come ti sembra? Se l'utente scrive un valore minore o uguale a zero, viene pulito il campo.
codice:
<script>
document.getElementById('km').addEventListener('input', function(){
this.value = this.value.replace(/\D/g,'');
if (this.value <= '0') this.value = '';
});
</script>
Ovviamente c'è un controllo lato server dei dati.