2015-06-02 4 views
1

начиная с того, что я действительно новый в програмировании especialy Angular. Я хочу проверить ввод, чтобы не разрешать число 0. Вот мой код:AngularJS проверка ввода отличается от нуля

<form ng-app="linearEquation" ng-controller="calcCtrl" 
       name="calculator" ng-init="notValid=true" novalidate> 
     <div> 
      <h3 class="field">Kalkulator oblicza wartość równania 
       <var>ax = b</var>.</h3> 
      <div class="field"> 
       <p> 
        Podaj wartość a:<br/> 
        <input type="number" name="fieldA" ng-model="a" required integer /> 
        <span class="error" ng-show="calculator.fieldA.$invalid"/> 
        <span ng-show="calculator.fieldA.$error.number"> 
        Proszę podać liczbę</span><br/> 
       </p> 
       <p> 
        Podaj wartość b:<br/> 
        <input type="number" name="fieldB" ng-model="b" required integer /> 
        <span class="error" ng-show="calculator.fieldB.$invalid"/> 
        <span ng-show="calculator.fieldB.$error.number"> 
        Proszę podać liczbę</span> 
       </p> 
       <p> 
        <button type="submit" 
           ng-disabled=" 
            calculator.fieldA.$dirty && 
            calculator.fieldA.$invalid || 
            calculator.fieldB.$dirty && 
            calculator.fieldB.$invalid" 
           ng-click="count()"> 
         Oblicz 
        </button> 
       </p> 
      </div> 
      <p class="field" id="result">x = {{c.toFixed(2)}}</p> 
     </div> 

Как его проверить. Также кнопка не отключается при загрузке страницы. Как управлять этим? Спасибо за ответы.

+1

Это не отключается, потому что это может быть только если хотя бы одно поле является грязным и недействительным. Условие должно быть калькулятором 'ng-disabled =". $ Invalid "'. –

ответ

1

Вы должны удалить оба $dirty, если вы хотите, чтобы кнопка была отключена при запуске. И вам лучше использовать директиву ng-pattern для проверки чисел 1-9 и опустить «0». Ваш input должен выглядеть как-то вроде этого:

<input type="number" name="fieldA" ng-model="a" required ng-pattern="/[1-9]/" /> 
0

Я understan два случая здесь первое, что в области 0 не должно быть разрешено на всех, например, 0 является недействительным и 10 также недействителен 550 также недействительным В том случай использование

<input type="number" name="fieldA" ng-model="a" required ng-pattern="/[1-9]*/" /> 

второй случай ноль ноль может быть частью числа, но значение 0 не должен быть разрешен, например, 0 является недействительным, но 01 действует, 501, является действительным, и 0000 является недействительным в том случае,

<input type="number" name="fieldA" ng-model="a" required ng-pattern="/([1-9][0-9]*||[0]*[1-9]+[0-9]*)/" /> 

по регулярному выражению, если он начинается с 1-9 может иметь любое число после этого, если он начинается с 0, то должен иметь по крайней мере одно ненулевое значение, затем им

Смежные вопросы