it-swarm.com.de

jquery-Keyup-Funktion, ob Nummer

ich versuche, ein Eingabefeld zu erstellen, in das der Benutzer nur Zahlen eingeben kann. Diese Funktion funktioniert für mich fast schon gut: 

        $('#p_first').keyup(function(event){
        if(isNaN(String.fromCharCode(event.which))){
            var value = $(this).val();

            $(this).val(value.substr(0,value.length-1));
        }
    });

aber das Problem ist, wenn der Benutzer den Schlüssel mit einem Zeichen hält, das die Funktionstaste nicht auslöst .... irgendwelche Ideen, wie ich das verbieten kann? 

13
Adam Sam

Versuchen Sie, an das Ereignis keypress statt an keyup zu binden. Es wird wiederholt ausgelöst, wenn eine Taste gedrückt wird. Wenn es sich bei der gedrückten Taste nicht um eine Zahl handelt, können Sie preventDefault() aufrufen, wodurch die Eingabe der Taste in das Eingabe-Tag verhindert wird.

   $('#p_first').keypress(function(event){

       if(event.which != 8 && isNaN(String.fromCharCode(event.which))){
           event.preventDefault(); //stop character from entering input
       }

   });

Arbeitsbeispiel:http://jsfiddle.net/rTWrb/2/

29
Kevin Bowersox

Ich entschied mich für die Antwort von @Rahul Yadav, die jedoch falsch ist, da sie keine Nummerntasten mit unterschiedlichen Nummern enthält. 

Hier sehen Sie einen Auszug der Codetabelle :

Hier die Funktion, die ich implementiert habe:

function isNumberKey(e) {
var result = false; 
try {
    var charCode = (e.which) ? e.which : e.keyCode;
    if ((charCode >= 48 && charCode <= 57) || (charCode >= 96 && charCode <= 105)) {
        result = true;
    }
}
catch(err) {
    //console.log(err);
}
return result;

}

3
Richard P.

Der beste Weg ist, den Wert der Eingabe zu überprüfen, anstatt die Taste zu drücken. Weil es Tabulatoren, Pfeile, Rücktaste und andere Zeichen gibt, die überprüft werden müssen, wenn Sie Zeichencode verwenden.

Dieser Code prüft den Eingabewert, nachdem der Benutzer eine Taste gedrückt hat:

$('#p_first').keyup(function(){
    while(! /^(([0-9]+)((\.|,)([0-9]{0,2}))?)?$/.test($('#p_first').val())){
        $('#p_first').val($('#p_first').val().slice(0, -1));
    }
});

While-Schleife das letzte Zeichen entfernen, bis der eingegebene Wert gültig ist. Regex /^(([0-9]+)((\.|,)([0-9]{0,2}))?)?$/ Ganzzahl und Gleitkommazahl validieren, z. 12,12, 12,1, 12. Es ist wichtig, dass auch die Zahl "12." (Punkt am Ende) gültig ist! Andernfalls kann der Benutzer keinen Punkt eingeben.

Und dann beim Senden eines regulären Ausdrucks die gültige Gleitkommazahl ([0-9]{1,2}) Anstelle von ([0-9]{0,2}) Prüfen:

$('form').submit(function(e){
    if(! /^([0-9]+)((\.|,)([0-9]{1,2}))?$/.test($('#p_first').val())){
        $('#p_first').addClass('error');
        e.preventDefault();
    }
});

Hinweis: Es ist besser, $('#p_first') der Variablen zuzuweisen. var input = $('#p_first');

2
instead

Versuchen Sie diese Lösung:

jQuery('.numbersOnly').keyup(function () { 
    this.value = this.value.replace(/[^0-9\.]/g,'');
});

Demo: http://jsfiddle.net/DbRTj/

Gleiche Fragen:

1
webdeveloper

Versuchen Sie, dies .. es kann nützlich sein.

<HTML>
<input type="text" name="qty" id="price" value="" style="width:100px;" field="Quantity" class="required">
</HTML>

<script>
 $(document).ready(function() {
$('#price').live('keyup',function(){
        this.value = this.value.replace(/[^0-9\.]/g,'');
        });
});
</script>
0
Krunal Hingu

Verwenden Sie bei einem Schlüsselereignis event.key, um den tatsächlichen Wert abzurufen. Um zu prüfen, ob eine Ganzzahl vorliegt:

isFinite(event.key);

Eine einfachere HTML-Lösung wäre die Eingabe der Variable number. Es beschränkt sich nur auf Zahlen (Art).

<input type="number">

In jedem Fall sollten Sie alle Benutzereingaben bereinigen mit:

string.replace(/[^0-9]/g,'');
0
Gibolt

Ich habe die folgende Funktion verwendet, um zu überprüfen, ob eine bestimmte Zeichenfolge eine Zahl ist oder nicht. Diese Implementierung arbeitet mit Keyup und Keydown und übernimmt auch die Nummerntasten

// Validate Numeric inputs
function isNumber(o) {
    return o == '' || !isNaN(o - 0);
}

Angenommen, Ihr Schlüsselcode für das keyup- oder keydown-Ereignis befindet sich in der keyCode-Variablen:

var keyCode = e.keyCode || e.which;
if (keyCode >= 96 && keyCode <= 105) {
        // Numpad keys
        keyCode -= 48;
}
console.log(isNumber(String.fromCharCode(keyCode)));
console.log(isNumber($(this).val() + String.fromCharCode(keyCode)));

Gibt false zurück, wenn der Rückgabewert von isNumber false ist:

    var txtVal = $(this).val() + String.fromCharCode(keyCode);
    if (!isNumber(txtVal)) {
        e.returnValue = false;
    }
0
Sacky San