2016-07-25 9 views
1

Ich benutze eckige js und unten ist mein Code, der nur Zahlen durch Komma getrennt erlaubt.But Regex, die ich verwendet, ermöglicht Benutzer 1, 2 eingeben.Erlaube nur Komma getrennte Zahlen im Eingabefeld mit Winkel js

Gibt es eine Möglichkeit, so dass ich den Benutzer beschränken kann, nach jeder Nummer nur ein Komma einzugeben?

Plunker - http://plnkr.co/edit/g1X9ldVuH4ZewAlumM1P?p=preview

function NumberValidator() { 
    return { 
     require: '?ngModel', 
     link: function(scope, element, attrs, ngModelCtrl) { 
      if (!ngModelCtrl) { 
       return; 
      } 

      ngModelCtrl.$parsers.push(function(val) { 
       var clean = val.replace(/[^\d+(,\d+)*$]/g, ''); 
       if (val !== clean) { 
        ngModelCtrl.$setViewValue(clean); 
        ngModelCtrl.$render(); 
       } 
       return clean; 
      }); 

      element.bind('keypress', function(event) { 
       if (event.keyCode === 32) { 
        event.preventDefault(); 
       } 
      }); 
     } 
    }; 

Antwort

2

Entfernen Sie den clean Teil und ersetzen Sie die, wenn die Bedingung mit,

if (!/^\d+(?:,\d+)*$/.test(val)) { 

Dieser Code würde prüfen, ob der angegebene Wert in 1,2,3 oder 1 oder 3,4 Formaten ist oder nicht .

Beispiel:

console.log(!/^f+$/.test('ff')) 
 

 
console.log(!/^f+$/.test('df'))

Denken Sie so etwas wie dies wünschen,

str.replace(/[^\d,]|^,+|,+$|,+(?=,)/gm, '') 

PLNKR

+0

Wie dies funktionieren würde, wie ich res wollen trict die Benutzer, um Zahlen einzugeben, gefolgt von einem Komma in einem Textfeld, So verwende ich Replace-Funktion – Nagendra

+0

keine Notwendigkeit, Funktion zu ersetzen .. Überprüfen Sie einfach jeden Buchstaben (auf Tastendruck) mit diesem '^ \ d + (?:, \ d +) * $ 'Regex. Wenn es nicht wahr ist, dann zeige das Kästchen in roter Farbe an. Wenn es wahr ist, zeige es in grüner Farbe. –

+0

Ich möchte die Textboxfarbe nicht ändern. Auch wenn der Benutzer andere Zeichen drückt, sollte es nicht in der Textbox angezeigt werden. Daher benutze ich replace – Nagendra

Verwandte Themen