Nie jest to możliwe bez sprawdzania wartości na wejściu.
Element input z atrybutem type, którego wartość jest „numer” reprezentuje precyzyjną kontrolę za ustalenie wartości tego elementu do ciąg reprezentujący liczbę.
Ponieważ jest to ciąg reprezentujący liczbę, nie ma żadnej możliwości upewnienia się, że ciąg znaków może reprezentować wartości liczbowe, lub nie.
Dopuszczalne atrybuty nie dają możliwości sprawdzenia poprawności wartości kontrolki wprowadzania liczb.
Jeden sposób na to przy pomocy JavaScript może wyglądać tak.
// 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" />
Jeśli struganie na wysyłanie danych do serwera upewnij się, aby sprawdzić poprawność danych na serwerze, jak również. JavaScript po stronie klienta nie może zagwarantować, że wysyłane dane będą zgodne z oczekiwaniami.
W HTML 5 u można zrobić tak: i myślę, że jest to najbardziej elegancki sposób, aby ograniczyć wprowadzanie przez użytkownika liczb dodatnich bez zapisywania funkcji sprawdzania poprawności. – Bikku
@GoodBadandUgly - Zostało to wspomniane w pytaniu wraz z jego ograniczeniami. – Quentin
Pamiętaj, że użytkownicy zawsze mogą ominąć takie ograniczenia! Jeśli przesyłasz coś do serwera (czytaj funkcje pobierania danych lub pobierania danych), musisz jeszcze raz potwierdzić. – Hafenkranich