Skip to content Skip to sidebar Skip to footer

How To Validate Textbox Based On Dropdown Value In Angularjs?

In dropdown we have Number and Decimalnumber if user select Number from dropdown text box should allow to enter only number (round number) for example 22,33,444,345436 . it should

Solution 1:

first you change :

<inputtype="number" ng-model="userinput">

to

 <inputtype="text" ng-model="userinput">

then

var app = angular.module('plunker', []);


app.controller('MainCtrl', function($scope) {

  $scope.selectedvalue = "Number";


  $scope.userinput = "";

  $scope.changeFun = function(e) {
    var tempInput = document.querySelector("#inputId").value;
    var regex = new RegExp("^[0-9]+$");
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);

    if($scope.selectedvalue === "Number") {
      if ((regex.test(str) || e.which === 8)) {
          returntrue;
      }
      e.preventDefault();
      returnfalse;
    } elseif($scope.selectedvalue === "Decimalnumber") {
      var regex = new RegExp("^[0-9]+$");
      var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
      if ((regex.test(str) || e.which === 8) && tempInput.indexOf(".") === -1) {
        console.log("comming 1111");
          returntrue;
      }


      if(tempInput.indexOf(".") === -1) {
        returntrue;
      }

      if(tempInput.indexOf(".") !== -1 && str !== ".") {
        var lastSubstr = tempInput.substring(tempInput.indexOf("."));
        if (lastSubstr.length < 3) 
        {
            returntrue;
        }
      }


      e.preventDefault();
      returnfalse;
    }

  }
});

see this link : https://plnkr.co/edit/1fvI3grvZUzJCuqwJRXA?p=preview

Solution 2:

add this

<spanng-if="userinput == selectedvalue">
match
</span>

and change

<inputtype="number" ng-model="userinput">

to

<inputtype="text" ng-model="userinput">

expected output

<bodyng-controller="MainCtrl">



 please select
  <selectng-model="selectedvalue"><optionvalue="Number">Number</option><optionvalue="Decimalnumber">Decimalnumber</option></select><br><p>Selected: {{selectedvalue}}</p><inputtype="text"ng-model="userinput"><spanng-if="userinput == selectedvalue">
    match
  </span></body>

Solution 3:

You can make use of ng-pattern to dynamic change rules of an input field.

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.inputTypes = [{
     name: "Number",
     regex: "\\d+"  
  },
  {
     name: "Decimal",
     regex: "^\\d*\\.\\d{1,2}$"
  }];
  $scope.selectedregex = $scope.inputTypes[0].regex;
  $scope.userinput = "";
});
<scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js"></script><divng-app="plunker"ng-controller="MainCtrl">

  please select
  <selectng-model="selectedregex"><optionng-repeat="type in inputTypes"value="{{type.regex}}">
        {{type.name}}
     </option></select><br><p>Selected regex: {{selectedregex}} </p><formname="form"><inputname="input"ng-pattern="selectedregex"ng-model="userinput" /><br /><spanng-show="!form.input.$valid">Please enter valid input</span></form></div>

Post a Comment for "How To Validate Textbox Based On Dropdown Value In Angularjs?"