it-swarm.com.de

Lassen Sie keine alphabetischen Zeichen in einem <input type = number /> eingeben

Ich brauche ein Textfeld, in dem NUR Zahlen [0-9] zulassen sollten, wenn es eingegeben wird. Ich habe type="number" verwendet, was definitiv die clientseitige Validierung enthält, aber auch die Eingabe anderer Alphabete erlaubt. Ich kann es tun, indem ich jeden Keydown nachverfolgen und mit Regex abgleichen lasse, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, mich auf die Verwendung von HTML-Tags zu beschränken und KEINE Funktionen in JavaScript zu definieren, die in jedem Keydown verglichen werden.

Code reicht dazu nicht aus:

    <input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number">

Jede Hilfe wird geschätzt.

17
user79307

Sie können jquery.numeric plugin verwenden.

Siehe hier __. hier ähnliche Frage.

$(document).ready(function(){
   $(".numeric").numeric();
});
19
mihai.ciorobea

Versuche dies

javascript-Funktion definieren

funktion für zulässige Zahl mit Dezimalstelle wie unten

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

    return true;
}

funktion für nur zulässige Zahl, nicht dezimal ist wie folgt 

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

    return true;
}

Html

<input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number" onkeypress="return isNumberKey(event)">
14
Sandip

input type = "number" zum Abrufen der numerischen Tastatur auf dem mobilen Gerät

Javascript

function numbersonly(myfield, e)
        {
            var key;
            var keychar;

            if (window.event)
                key = window.event.keyCode;
            else if (e)
                key = e.which;
            else
                return true;

            keychar = String.fromCharCode(key);

            // control keys
            if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
                return true;

            // numbers
            else if ((("0123456789").indexOf(keychar) > -1))
                return true;

            // only one decimal point
            else if ((keychar == "."))
            {
                if (myfield.value.indexOf(keychar) > -1)
                    return false;
            }
            else
                return false;
        }

Html

<input type="number" onkeypress="return numbersonly(this, event)"/>
3
mswyss

Ich stelle fest, dass die Frage um das Jahr 2013 herum gepostet wurde. Wie auch immer, jetzt type = "number" schränkt Alphabete und Sonderzeichen ein, mit Ausnahme von 'e', ​​'.' und '+' als 'e' und '.' werden für exponentielle Zahlen wie 1.2e + 12, '.' wird für Dezimalzahlen berücksichtigt.

1

Sie müssen Ihr Eingabefeld in einem Formular und mit einem Absenden-Button haben. Die Formularvalidierung erfolgt bei Übermittlung des Formulars. Eine Demo finden Sie hier: http://jsfiddle.net/ds345/Q4muA/1/

<form>Number:
    <input type="number" name="Number" value="10">
    <br>
    <input type="submit" value="Submit" />
</form>
1
ds345

Browser verhalten sich anders. In Chrome den folgenden Code:

<input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number">
  <input type="submit">

funktioniert für Sie nur wenn es in einem Formular ist und erst, nachdem der Benutzer auf die Schaltfläche "Senden" geklickt hat 

1
Greg Neils

Wenn Sie nichts dagegen haben, ein bisschen Javascript zu verwenden, kann dies JS-BIN Demo helfen:

<input type="number" onkeyup="if(!this.checkValidity()){this.value='';alert('Please enter a number')};"/>
1
Akhil Sekharan

Versuche dies:-

 $("#txtAge").keydown(function (e) {
       if(e.key=='e' || e.key=='.' || e.key=='-')
        return false;
    });
1
user7409534

add - min = "0" max = "9" onkeydown = "return false;"

<input type="number" id="txt_number" maxlength="70" name="txt_name" placeholder="Number" min="0" max="9" onkeydown="return false;">

0
Ankush Naskar