2017-01-31 5 views
0

Funktioniert gut auf Chrome, aber in Firefox kann ich nicht drücken Sie die Löschtaste oder die Rücktaste, um die Nummer zu bearbeiten. Wo ist das Problem in meinem Skript? Natürlich kann ich einen anderen Weg verwenden, um dies zu tun, aber ich möchte wissen, welche Fehler Firefox über das Skript ausführen soll?Einfache Nummer Eingabe Validierung in Javascript (Firefox Fehler)

Antwort

0
if(theEvent.preventDefault) theEvent.preventDefault(); 

Sie verfehlten "{"

if(theEvent.preventDefault){ 
    theEvent.preventDefault(); 
} 

JavaScript Zeichengenauigkeit ist. Erinnere dich daran. Ich hoffe, es hat geholfen. Viel Glück.

+1

Es stimmt, dass Javascript Zeichengenauigkeit ist aber auch diese 'if (theEvent erlaubt. preventDefault) theEvent.preventDefault(); ' Sie müssen keine Breackets für einen Zeilencode auf Bedingungen verwenden –

+0

Das ist kein Problem, denke ich ... Obwohl ich gerade mit Zahnspange versucht. Aber denken Sie daran, dass Chrome funktioniert. In Firefox drückt das Drücken der Rücktaste meine Funktion auch und weigerte sich, irgendeine normale Arbeit dieses Schlüssels zu machen, aber in chrome ruft es meine Funktion nicht an, wenn ich diese Tasten drücke und nur für Zifferntasten ruft es meine Funktion auf und funktioniert gut. –

0

Hallo @Raju Ahmed Ich überprüfe deinen Code und stelle fest, dass du Schlüssel mit regex testest, aber das Problem ist, dass es nur nach Zahlen sucht und das ist, was du gefragt hast. Aber Sie müssen auch nach Delete Key suchen (was 46 ist) und auch nach Backspace (was 8 ist) und anderen Schlüsseln suchen, was Sie verwenden möchten.

Auch ich teste Ihren Code auf Chrome Build 55.0.2883.87 m (64-Bit) und es funktioniert auch nicht für löschen, Backspace und andere.

Sie könnte wie folgt verwenden, wenn u jQuery verwenden:

function onlyNumberInput(evt) { 
     var theEvent = evt || window.event; 
     var allowed = [8, 17, 46, 37, 38, 39, 40]; 
     var key = theEvent.keyCode || theEvent.which; 
     var regex = /[0-9]/; 
     if($.inArray(allowed, key) !== -1) { 
      key = String.fromCharCode(key); 
      if(!regex.test(key)) { 
       theEvent.returnValue = false; 
       if(theEvent.preventDefault) 
        theEvent.preventDefault(); 
      } 
     } 
    } 

Wenn Sie andere Tasten verwenden möchten, finden Sie die keyCode den Schlüssel und fügen Sie in erlaubt. Wenn Sie JQuery nicht in Ihrem Code verwenden, lassen Sie es mich bitte wissen. Ich kann es zur normalen Version ändern :)

Eine weitere Sache, dies erlaubt ist in JS zu verwenden, wenn Sie nur eine Zeile Job:

if(theEvent.preventDefault) 
    theEvent.preventDefault(); 

bearbeiten II:

Well @Raju Ich habe den Code erneut überprüft, es funktioniert nicht, wie Sie wünschen. Also habe ich ein Beispiel dafür mit einem Plugin gefunden, wenn du es benutzen willst.

Plugin: NumericInput,

Demo: Demo

Sie können diesen Link überprüfen über Zahl nur Eingabe des: HTML Text Input allow only Numeric input

+0

Danke für Ihre Mühe. Verwenden Sie die gleiche Version und jQuery auch. Ihr Skript funktionierte für Löschen/Backspace in Firefox, aber jetzt ist es nicht in der Lage, beide Browser zu identifizieren. Leute aus vielen Ländern werden meine Anwendung benutzen. Also sollte es für jede Browserversion funktionieren. –