Questo non è possibile senza convalidare il valore dell'ingresso.
L'elemento con un attributo del tipo cui valore è "numero" rappresenta un preciso controllo per impostare il valore dell'elemento di una stringa rappresenta un numero.
Poiché è una stringa che rappresenta il numero, non è possibile garantire che la stringa possa rappresentare valori numerici o meno.
Gli attributi consentiti non ti daranno la possibilità di convalidare il valore del controllo di immissione del numero.
Un modo per farlo con l'aiuto di JavaScript potrebbe assomigliare a questo.
// Select your input element.
var numInput = document.querySelector('input');
// Listen for input event on numInput.
numInput.addEventListener('input', function(){
// Let's match only digits.
var num = this.value.match(/^\d+$/);
if (num === null) {
// If we have no match, value will be empty.
this.value = "";
}
}, false)
<input type="number" min="0" />
Se state programmando su inviare i dati a un server assicuratevi di convalidare i dati sul server pure. Il lato client JavaScript non può garantire che i dati inviati siano quelli che ci si aspetta che siano.
In HTML 5 u può fare in questo modo: e credo che questo sia il modo più elegante per limitare input dell'utente a numeri positivi senza scrivere una funzione di validazione. – Bikku
@GoodBadandUgly - Questo è stato menzionato nella domanda, insieme ai suoi limiti. – Quentin
Ricorda che gli utenti possono sempre aggirare tali limitazioni! Se si invia qualcosa sul lato server (leggere le funzioni db o di recupero dati), è necessario eseguire nuovamente la convalida. – Hafenkranich