2016-07-29 6 views
0

Ich habe ein numerisches Textfeld, standardmäßig numerische Textfeld ermöglicht Exponenten und Punkte. Wie schränke ich das ein?Begrenzen Exponenten und Punkte (.) In numerischen Textfeld html

Eine der Methoden, die ich mir vorstellen kann, ist die Verwendung von string.replace bei Eingabe-Ereignis, aber es funktioniert nicht wie erwartet. Unten ist mein Code ..

HTML

 <input type='number' class='number'> 

JavaScript

 $(".number").on('input', function() { 
      this.value = this.value.replace(/e|E|\./g, ''); // Remove e, E, and period(.) 
      if (this.value.length > 4) { 
       this.value = this.value.slice(0, 4); 
      } 
     }); 

Wenn i String '2e' in Textfeld eingeben, wird gesamter Eingang läuft, wenn über Code entfernt zu werden. Ich möchte nur e, E oder Punkt aus der Eingabe-String nicht die gesamte Eingabe entfernen.

Gibt es einen Weg, dies zu erreichen.

JSfiddle

Antwort von nichel ist wie ein Zauber funktioniert, jetzt mein Problem ist, wie beschränke ich das gleiche in PASTE Veranstaltung.?

Antwort

0

Also im Grunde wollen Sie nur Zahlen zulassen? Dann beschränken die Schlüssel von keycode & entfernen überschüssige Zeichen auf Paste

$(".number").keypress(function(e){ 
    return e.keyCode>47&&e.keyCode<58; 
}).paste(function(){ 
    $(this).val($(this).val().replace(/\D/g,'')); 
}) 

Und da Sie die maximale Länge 4 sein möchten, fügen Sie einfach max="9999":

<input type='number' class='number' max="9999"> 
+0

_Seit Sie die maximale Länge möchten 5_ OP will ** 4 ** – Tushar

+0

@Tushar Oh, bemerkte ich '.slice (0, 4)' sein und dachte falsch. Tatsächlich. – nicael

0

input[type=number] kehrt "" (leere Zeichenkette) wenn der Eingabewert nicht gültig ist.

Sie können this Beitrag für weitere Informationen verweisen.

Ich würde vorschlagen, dass Sie stattdessen input[type=tel] verwenden. Es hat auch ein maxLength Attribut, so dass Sie sich keine Gedanken über das Trimmen zusätzlicher Werte machen müssen.

Sie können sogar Ihre Regex /[^0-9]/ ersetzen. Dadurch werden alle Zeichen außer Ziffern ersetzt.

Sample Fiddle.

So endgültige Code, den Sie würde wie folgt aussehen: JSFiddle

Verwandte Themen