Tach!
ich habe eine Funktion, die mit checken soll, ob eine Zeit folgendes Format hat:
02:00 01:30 00:30
Meine Funtion functioniert mit allen Zeiten über einer Stunde, 00:30 funktioniert zum Beispiel nicht.
if (hours > 0 && hours < 24 && minutes >= 0 && minutes < 60) {
$scope.validState = true;
return true;
}
$scope.validState = false;
return false;
Wenn 0 ein gültiger Wert für Stunde ist, dann darf die Prüfung nicht 0 ausschließen, sondern muss wie bei den Minuten >=
lauten.
Außerdem machst du es umständlicher als notwendig. Zum einen sollte die Funktion keine Werte außerhalb ändern, sondern nur ein Ergebnis zurückliefern. Das Konstrukt lässt sich damit eindampfen zu:
return hours >= 0 && hours < 24 && minutes >= 0 && minutes < 60;
[0-9]
kann in einem Regexp auch als \d geschrieben werden (d wie digit). Auch der Regex-Test sollte $scope.validState nicht setzen.
Damit hast du nun aber ein anderes Problem, das sich wie folgt lösen lässt. Das ng-click ruft nicht isTimeValid() ab, sondern checkTimeValidity(). Und diese neu zu schreibende Funktion befragt ihrerseits isTimeVaid() und setzt dann aus deren Ergebnis die entsprechenen Werte im $scope. Damit kann dann isTimeValid() eine einfache lokale Funktion werden, die nicht an $scope hängen muss (falls es nicht noch andere Gründe gibt).
dedlfix.