Ich habe eine persönliche Funktion, die eine ID und ein Muster für die Überprüfung einige Eingaben nehmen.Sende Muster an eine Funktion
var id, schema;
\t function checkField(id, schema){
\t \t var input = id.val();
\t \t var pattern = schema;
\t \t if (!input.match(pattern)){
\t \t \t console.log('Input = '+input);
\t \t \t console.log('Pattern = '+pattern);
\t \t \t id.removeClass().addClass("error");
\t \t \t $(".oke").css({display: 'none'});
\t \t }else{
\t \t \t console.log('Classe = ok');
\t \t \t id.removeClass().addClass("ok");
\t \t \t $(".nope").css({display: 'none'});
\t \t }
\t }
\t // Vérification téléphone
\t $("#tel").focusout(function(){
\t \t checkField($(this), "/0[1-7,9]\d{8}/");
\t });
\t // Vérification code postale
\t $("#cp").focusout(function(){
\t \t checkField($(this), "/^((0[1-9])|([1-8][0-9])|(9[0-8])|(2A)|(2B))[0-9]{3}$/");
\t });
Aber die, wenn Zustand zurück immer null
(!input.match(pattern)
). Die beiden Konsolen-Log geben die Zahl in Eingabe und das Muster korrekt zurück, warum das if immer falsch ist?
Die doppelten Anführungszeichen aus dem ganzen regexps und die erste Anker könnte auch müssen entfernt werden muß ('/^0 [1-79] \ d {8} $/'). Und der zweite kann geschrieben werden als '/^(0 [1-9] | [1-8] \ d | 9 [0-8] | 2 [AB]) \ d {3} $ /'. Es ist auch ratsam, 'if (! Input.match (pattern))' durch 'if (! Pattern.test (input)) ' –
Excellent, thanks zu ersetzen. Was ist der Unterschied zwischen input.match pattern und pattern.test Eingabe? – Buck
'test()' returns * true * oder * false *, während 'match' entweder * null * oder ein Array von Match-Daten zurückgibt. –