2016-08-16 12 views
10

Mam formularz, w którym jestem w trakcie zmiany moich pól telefonicznych z użycia regex do modułu wejściowego intl-tel. Występują problemy z pomyłką w sprawdzaniu poprawnych #s.

Mam formularz z kilkoma z tych pól ...

<div class="row"> 
<div class="col-xs-2"> 
    <label for="cellPhone" 
      translate>CONTACT.CELL</label> 
</div> 
<div class="col-xs-6" 
    ng-class="{'has-error': !cellPhoneFocus && forms.contactForm.cellPhone.$invalid && forms.contactForm.cellPhone.$touched }"> 
    <input type="text" class="form-control intlPhoneInput" 
      id="cellPhone" name="cellPhone" 
      ng-model="contact.cellPhone.display" 
      ng-focus="cellPhoneFocus = true" 
      ng-blur="cellPhoneFocus = false; validatePhone($event)"> 
    <div ng-messages="forms.contactForm.cellPhone.$error" 
     ng-show="!cellPhoneFocus && forms.contactForm.cellPhone.$touched" 
     class="errorMessages"> 
     <p ng-message="pattern" translate> 
      CRUD.VALID_PHONE</p> 
    </div> 
</div> 

i złożyć ...

<button type="submit" class="btn btn-primary" ng-disabled="forms.contactForm.$invalid" id="saveContactLink" translate>CRUD.SAVE</button> 

Wtedy w moim kontrolera (Maszynopis) ...

//In Constructor 
$scope.validatePhone = this.validatePhone.bind(this); 

//Outside constructor 
private validatePhone(eventObject: any) { 
    let thePhoneField = $('#' + eventObject.target.id); 
    let phoneIsValid = thePhoneField.intlTelInput("isValidNumber"); 

    this.$scope.forms.contactForm[eventObject.target.id].$invalid = !phoneIsValid; 
    this.$scope.forms.contactForm[eventObject.target.id].$error = {"pattern": !phoneIsValid}; 
} 

To poprawnie ustawia moją klasę błędów i komunikat o błędzie, ale nie powoduje, że FORM jest nieprawidłowy. Próbowałem $ setValidity ...

this.$scope.forms.contactForm[eventObject.target.id].$setValidity('pattern', !phoneIsValid); 

... ale nic nie robi.

Jak ustawić nieprawidłowe ustawienie pola, wyświetlić poprawny komunikat ng (jeśli jest więcej niż jeden) i upewnić się, że formularz $ błędy zostanie zaktualizowany, aby zgłoszenie zostało wyłączone?

Odpowiedz

3

Okazuje $ setValidity działa, ale o setValidity wraz z $ i $ nieważny błąd spowodował jakiś skrzyżowane przewody.. Komentowanie dwóch ostatnich włączonych/wyłączonych przycisku przesyłania jest prawidłowe, gdy unieważniam pole.

0

Trzeba tylko być w stanie ustawić formularz nieważne tak:

forms.contactForm.$invalid = true 
+0

To spowoduje unieważnienie formularza, ale nie pomoże, aby było ważne, gdy pole jest poprawione, ponieważ nie mogę po prostu zrobić czegoś innego na validatePhone, aby ustawić poprawny formularz ... ponieważ jest więcej niż jedno pole. – NikZ

Powiązane problemy