1115 Stimmen

HTML-Texteingabe erlaubt nur numerische Eingaben

Gibt es eine schnelle Möglichkeit, eine HTML-Texteingabe ( <input type=text /> ), um nur numerische Tastenanschläge (plus '.') zuzulassen?

2voto

Edson Cezar Punkte 21904

Ich habe die Verwendung dieser Funktion beendet:

onkeypress="if(event.which < 48 || event.which > 57 ) if(event.which != 8) return false;"

Dies funktioniert gut in IE und Chrome, ich weiß nicht, warum es nicht gut in Firefox zu arbeiten, diese Funktion blockieren die Tab-Taste in Firefox.

Für die Tabulator-Taste funktioniert gut in Firefox fügen Sie diese:

onkeypress="if(event.which < 48 || event.which > 57 ) if(event.which != 8) if(event.keyCode != 9) return false;"

2voto

Jack Punkte 164

Ich habe vielleicht eine andere (einfache) Lösung für dieses Problem...

Da String.fromCharCode(key) auf der QWERTY-Tastatur seltsame Dinge zurückgibt (der numerische Tastenblock gibt den Code als g für 1 und 1 für &-Zeichen zurück

Ich habe erkannt, fangen den endgültigen Wert auf keyup innerhalb der Eingabe, um es auf einen beliebigen Wert zurückzusetzen ist eine einfachere, leichtgewichtige & bugproof-Methode (könnte auch über einige Regex ... um Dezimalstellen und so weiter zu halten ... nicht haben, um andere Strg, Home, Entf und Enter-Ereignisse zu filtern ... getan werden)

Verwendung mit jq :

<input class='pn'>
<script>
function pn(el){nb=el.value;if(isNaN(nb) || nb<1)el.value=1;}
jQuery('.pn').keyup(function(){pn(this);});
</script>

Attribut Onkeyup:

<input onkeyup='positiveNumericInput(this)'>
<script>function positiveNumericInput(el){nb=el.value;if(isNaN(nb) || nb<1)el.value=1;}</script>

2voto

mbillard Punkte 37218

Sie können versuchen, das '''onkeydown'''-Ereignis zu verwenden und das Ereignis abzubrechen (event.preventDefault oder etwas Ähnliches), wenn es nicht zu den erlaubten Tasten gehört.

2voto

Prasanna Punkte 73

Geben Sie dem Eingabefeld eine Klasse ( <input class="digit" ...> ) und verwenden Sie jquery wie unten.

jQuery(document).ready(function () {
            jQuery('input.digit').live('input keyup',function(e){ jQuery(this).val(jQuery(this).val().replace( /[^\d]/g ,'')); });
});

Der obige Code funktioniert auch zum Deaktivieren von Sonderzeichen in Ctrl+V Schlaganfälle und right click auch Anschläge.

2voto

wezten Punkte 1706

Dieser entfernt jedes schlechte Zeichen sofort, erlaubt nur einen Punkt, ist kurz und erlaubt die Rücktaste, etc:

$('.numberInput').keyup(function () {
    s=$(this).val();
    if (!/^\d*\.?\d*$/.test(s)) $(this).val(s.substr(0,s.length-1));
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X