2016-06-26 19 views
2

Ich benutze <input type='text' onkeypress='return isNumberKey(event)'>
Ich habe versucht <input type='number'>, aber das erlaubt Menschen, einen Punkt und 'e' zu verwenden. Ich möchte nur, dass die Leute nur nicht negative ganze Zahlen verwenden dürfen.Integer numerische Eingabe nur auf mobilen Geräten

Idealerweise möchte ich es so machen, dass nur die Zahlentastatur in Safari und Chrome hochgezogen wird (ich glaube, dass die Mehrheit der mobilen Benutzer nur diese beiden Browser verwendet), aber ich werde mich definitiv damit begnügen, nur zu können Drücken Sie nicht negative ganze Zahlen.

function isNumberKey(evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode != 8 && (charCode < 48 || charCode > 57)) 
     return false; 

    return true; 
}; 

Antwort

3

Sie pattern Attribut mit RegExp\D verwenden können, input Ereignis, RegExp.prototype.test(), String.prototype.slice() mit dem Parameter 0, -1 letzten Eingangswert zu entfernen, wenn nicht eine Ziffer, die RegExp bei pattern Attribut passt

var input = document.querySelector("input"); 
 
function handleInput(event) { 
 
    var value = this.value; 
 
    if (new RegExp(this.pattern).test(value)) { 
 
    this.value = value.slice(0, -1) 
 
    } 
 
} 
 
input.addEventListener("input", handleInput);
<input type="text" pattern="\D" />

+0

Ein kleines Problem .. wenn Sie eine Nummer machen Dann darfst du Briefe schreiben. Beispiel: 3edafd ist erlaubt. – juice

+0

Nevermind .. Ich sah genau, was Ihr Code tat ... herausgefunden, dass es nur eine kleine Änderung gemacht .. hinzugefügt a-z Ausschlüsse in Regex. Vielen Dank! Man würde denken, dass "pattern = [0-9]" funktionieren sollte. Ich frage mich, warum Sie eine Funktion dafür brauchen würden ... – juice

+0

@juice Siehe aktualisierten Beitrag, angepasst 'Muster' zu' \ D', um zu überprüfen, ob Eingabe Wert ist keine Ziffer – guest271314

Verwandte Themen