validate natural input number with ngpattern

前端 未结 3 973
悲&欢浪女
悲&欢浪女 2020-12-01 07:22

I use ng-pattern=\"/0-9/\" to set price_field do not accept decimal number. But when I input natural number (from 0 to 9999999),

相关标签:
3条回答
  • 2020-12-01 07:44

    This is working

    <form name="myform" ng-submit="create()">
        <input type="number"
               name="price_field"
               ng-model="price"
               require
               ng-pattern="/^\d{0,9}(\.\d{1,9})?$/">
        <span  ng-show="myform.price_field.$error.pattern">Not valid number!</span>
        <input type="submit" class="btn">
     </form>
    
    0 讨论(0)
  • 2020-12-01 07:50
    <label>Mobile Number(*)</label>
    <input id="txtMobile" ng-maxlength="10" maxlength="10" Validate-phone  required  name='strMobileNo' ng-model="formModel.strMobileNo" type="text"  placeholder="Enter Mobile Number">
    <span style="color:red" ng-show="regForm.strMobileNo.$dirty && regForm.strMobileNo.$invalid"><span ng-show="regForm.strMobileNo.$error.required">Phone is required.</span>
    

    the following code will help for phone number validation and the respected directive is

    app.directive('validatePhone', function() {
    var PHONE_REGEXP = /^[789]\d{9}$/;
      return {
        link: function(scope, elm) {
          elm.on("keyup",function(){
                var isMatchRegex = PHONE_REGEXP.test(elm.val());
                if( isMatchRegex&& elm.hasClass('warning') || elm.val() == ''){
                  elm.removeClass('warning');
                }else if(isMatchRegex == false && !elm.hasClass('warning')){
                  elm.addClass('warning');
                }
          });
        }
      }
    });
    
    0 讨论(0)
  • 2020-12-01 07:51

    The problem is that your REGX pattern will only match the input "0-9".

    To meet your requirement (0-9999999), you should rewrite your regx pattern:

    ng-pattern="/^[0-9]{1,7}$/"
    

    My example:

    HTML:

    <div ng-app ng-controller="formCtrl">
      <form name="myForm" ng-submit="onSubmit()">
        <input type="number" ng-model="price" name="price_field" 
               ng-pattern="/^[0-9]{1,7}$/" required>
        <span ng-show="myForm.price_field.$error.pattern">Not a valid number!</span>
        <span ng-show="myForm.price_field.$error.required">This field is required!</span>
        <input type="submit" value="submit"/>
      </form>
    </div>
    

    JS:

    function formCtrl($scope){
      $scope.onSubmit = function(){
        alert("form submitted");
      }
    }
    

    Here is a jsFiddle demo.

    0 讨论(0)
提交回复
热议问题