2016-05-31 10 views
0

Ich möchte Textbox nur in meiner Angular JS-Anwendung numerisch machen. Hier ist mein Code- script.jsNur numerische Textfeld in Angular JS

app.directive('numbersonly', function() { 
    return { 
     restrict: 'A', 
     link: function (scope, elm, attrs, ctrl) { 
      elm.on('keydown', function (event) { 
       if (event.which == 64 || event.which == 16) { 
        // to allow numbers 
        return false; 
       } else if (event.which >= 48 && event.which <= 57) { 
        // to allow numbers 
        return true; 
       } else if (event.which >= 96 && event.which <= 105) { 
        // to allow numpad number 
        return true; 
       } else if ([8, 13, 27, 37, 38, 39, 40].indexOf(event.which) > -1) { 
        // to allow backspace, enter, escape, arrows 
        return true; 
       } else { 
        event.preventDefault(); 
        // to stop others 
        return false; 
       } 
      }); 
     } 
    } 
}); 

Und auf UI-

<input type="text" id="txtEmpAge" data-ng-model="newemployee.Age" class="form-control" numbersonly required /> 

Aber das Textfeld sowohl numerische als auch Charakter annimmt.

+0

Verwenden regex in Ihrem Controller und Blick auf ngPattern – Haris

+0

vielleicht [Wie nur eine Nummer (Ziffern und Dezimalpunkt) zu ermöglichen, in einem Eingang eingegeben werden?] (Http://stackoverflow.com/questions/19036443/how-to-allow-only-a-number-dreams-point-to-be-in-a-input) hilft Ihnen – chresse

+0

Wenn es nur eine Eingabe und Sie brauchen es nicht zu sein eine Direktive könntest du die Antwort [hier] verwenden (http://stackoverflow.com/questions/32777184/html-input-for-posetive-whole-numbers-only-type-number) – George

Antwort

0

Wenn es nicht erforderlich ist, eine eigene Implementierung zu verwenden, versuchen Sie .

+0

und ich änderte Eingabe-Typ zu "Nummer "anstelle von" Text "und es ist in Ordnung, aber seine akzeptierende Dezimalzahl und das ist keine Voraussetzung.Sie helfen? –

+0

Bitte überprüfen Sie das Musterattribut des Tags. Es ermöglicht Ihnen, eine Regex für die Eingabe anzugeben. –

+0

0

können Sie type=number

<input type="number" id="txtEmpAge" data-ng-model="newemployee.Age" class="form-control" required /> 

verwenden diese nur Zahlenwerte in das Textfeld nehmen.

+0

gleiche Sache, die ich tat, aber seine akzeptierende Dezimalzahl und das ist keine Voraussetzung.Any Hilfe? –

+0

Dann sollten Sie eine Direktive verwenden, um dies zu erreichen. –

0

meiner Meinung nach, beste Weg, zu erreichen, wird es auch nicht zulassen, dass Benutzer Paste Strings Eingang

<input type="number" onkeypress='return event.charCode >= 48 && event.charCode <= 57'></input>

0

Verwenden Sie den folgenden Ausschnitt zu machen das Eingabefeld kopieren zu akzeptieren nur Zeichen zwischen 0 bis 9. Dies wird den Dezimalzeiger eliminieren.

<input type="number" onkeypress="return isNumKey(event)"/> 

Verwenden Sie diese Funktion, um eine Einschalttaste zu drücken.

function isNumKey(evt){ 
     var charCode = (evt.which) ? evt.which : event.keyCode 
     if (charCode > 31 && (charCode < 48 || charCode > 57)) 
      return false; 
     return true; 
    } 
+0

Danke @TobySpeight –