Gibt es eine schnelle Möglichkeit, eine HTML-Texteingabe ( <input type=text />
), um nur numerische Tastenanschläge (plus '.') zuzulassen?
Antworten
Zu viele Anzeigen?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;"
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>
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.