Ich versuche, ein Zeichen während der Eingabe / Eingabe zu entfernen, um zu testen, ob es sich um eine Zahl handelt oder nicht. Wenn es sich um eine Zahl handelt, behalten Sie sie bei, wenn nicht, entfernen Sie sie. Es kann mehr als eine Ziffer sein. Wenn ich zum Beispiel ein "d" eingebe, sollte es aus dem Textfeld gelöscht werden. Ich gebe dann eine "1" ein, wo sie im Textfeld bleiben soll. Ich tippe dann eine 4 und es bleibt auch so, dass das Textfeld jetzt "14" lautet. Dann gebe ich "g" ein, was gelöscht werden soll. Dann tippe ich eine "5" und jetzt lautet das Textfeld 145. Das habe ich bisher.

   $("#txtTestNumbersOnlyRegex").keyup(function () {

            $("#txtTestNumbersOnlyRegex").val(function (index, value) {
                var keyPressed = value.substr(0, value.length - 1);
                var regEx = new RegExp("/^5$/");
                if(!regEx.test(keyPressed)) {
                    alert("true");
                    return value.substr(0, value.length - 1);
                }                   
            });      

        });            
1
ddeamaral 11 Aug. 2015 im 04:00

3 Antworten

Beste Antwort

Sie können Regex verwenden, um alle nicht Ziffern durch Leerzeichen zu ersetzen, obwohl dies etwas seltsam aussieht.

$('input').keyup(function() {
    $(this).val($(this).val().replace(/\D/, ''));
});

Vollständiger Ausschnitt:

$('input').keydown(function() {
        console.log($(this).val());
        $(this).val($(this).val().replace(/\D/, ''));
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">

Sie können auch input type="number" verwenden, wenn Sie sich nicht für die IE-Unterstützung interessieren.

1
Marko Grešak 11 Aug. 2015 im 01:14

Vielleicht möchten Sie dies versuchen:

$("#txtTestNumbersOnlyRegex").keyup(function () { 
    var newValue = $(this).val().replace(/[^0-9]/g,'');
    $(this).val(newValue);    
 });  

Sie können es hier https://fiddle.jshell.net/aooh0gkz/ versuchen

1
Neil Villareal 11 Aug. 2015 im 01:09

Sie können die eingehenden Werte abfangen und entscheiden, was zu tun ist. Es ist also besser, den Tastendruck zu verwenden, da sonst Ihr Text jedes Mal ersetzt wird und Sie sagen, wenn Sie sich in der Mitte des Eingabewerts befinden und Caret bearbeiten, springt Caret bis zum Ende hinein andere Fälle

$("#txtTestNumbersOnlyRegex").keypress(function (event) {
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    if((keyCode>=65 && keyCode<=90) || (keyCode>=97 && keyCode<=122))
        return false;
    else return true;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type=text id = txtTestNumbersOnlyRegex />
1
joyBlanks 11 Aug. 2015 im 01:16