2016-07-22 55 views
0

我有以下的html代碼。我不希望小數點在這個輸入字段中。輸入類型編號 - 無法刪除小數點

有人可以讓我知道如何做到這一點。

<input type="number" min="0" step="1" ng-pattern="/^(0|[1-9][0-9]*)$/" ng-model="params.data" /> 
+0

可能重複[javascript正則表達式不匹配一個單詞](http://stackoverflow.com/questions/6449131/javascript-regular-expression-to-not-match-a-word) –

+0

運行焦點被取走後的功能?他們輸入093.4並轉到下一個輸入。該函數然後返回093 – austinthedeveloper

+0

是的,這也會起作用。你能告訴我一個鏈接嗎? – Patrick

回答

1

請記住,ngPattern只是用於驗證的形式(formName.field.$error.pattern)領域,它仍然可以讓你鍵入一個小數點或什麼,即使你的正則表達式不匹配。

可以使用做到這一點:

  1. ngChange指令;
  2. ngMask模塊(總是我需要處理輸入與我使用它的掩碼)。

我做了這個片段顯示兩種方式:

(function() { 
 
    "use strict"; 
 
    angular 
 
    .module('app', ['ngMask']) 
 
    .controller('mainCtrl', mainCtrl); 
 

 
    function mainCtrl($scope) { 
 
    $scope.params = {}; 
 
    $scope.checkNumber = function() { 
 
     if ($scope.params.data) { 
 
     $scope.params.data = $scope.params.data.replace(/\D+/, ''); 
 
     } 
 
    } 
 
    } 
 
})();
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ngMask/3.1.1/ngMask.min.js"></script> 
 
</head> 
 

 
<body ng-controller="mainCtrl"> 
 
    <form name="form" novalidate> 
 
    <label for="withoutMask">Input without mask: </label> 
 
    <input type="text" id="withoutMask" ng-model="params.data" ng-change="checkNumber()"> 
 
    <hr> 
 
    <label for="mask">Input with mask: </label> 
 
    <input type="text" id="mask" mask="d" repeat="15" restrict="reject" limit="false" ng-model="otherInput"> 
 
    </form> 
 
</body> 
 

 
</html>

我希望它能幫助!