如何限制在文本字段中显示减值

时间:2018-02-05 06:16:03

标签: javascript html angularjs

Fiddle.

我有一个文本字段,我想限制向此文本字段显示负值,如果我得到负值,那么我不想在文本框中显示该值。但我的ng模型应包含该负值。

function LoginController($scope) {
  $scope.number = -10;
  $scope.number1 = -20;
  $scope.number2 = -30;
}
<div ng-app ng-controller="LoginController">
  <input ng-model="number"></input>
  <input ng-model="number1"></input>
  <input ng-model="number2"></input>
  <input type="submit" ng-click="login()" value="Login"></input>
</div>

6 个答案:

答案 0 :(得分:1)

<html>
<body>

<input type="text" onkeypress="OnlyNumber(this);"></input>
</body>
<script>
function OnlyNumber(i)
{
    if(i.value.length>0)
    {
    i.value = i.value.replace(/[^\d]+/g, '');
    }
}
</script>
</html>

使用此javascript代码。 我使用了onkeypress javascript属性 您可以使用ng-keyup angularjs指令

check here

答案 1 :(得分:0)

根本不需要使用javascript。 转换

<input ng-model="number"></input>

<input type="number" min="0" ng-model="number"></input>

您需要的每个input代码。

P.S:当onLoad和复制/粘贴是操作时,这不会执行 not-showing ,但会发出警告,表示该值不符合输入条件。

答案 2 :(得分:0)

function cleanInput(selector){
    var elements = document.querySelectorAll(selector);
    for(element in elements){
       if(parseInt(element.value) < 0 ) {element.value = '';}
    }        
}

如果这是您的HTML:

<div id="clean-div" ng-app ng-controller="LoginController">
<input ng-model="number"></input>
<input ng-model="number1"></input>
<input ng-model="number2"></input>
<input type="submit" ng-click="login()" value="Login"></input>

然后,

cleanInput('#clean-div input');

编辑:使用HTML解决方案仅适用于较新的浏览器。如果您不在乎,请继续输入type = number解决方案。需要其他JavaScript。

答案 3 :(得分:0)

//try using conditional expression like this.
function LoginController($scope) {
    let num=-10
    $scope.number = num<0?'':num;
}

答案 4 :(得分:0)

<form action="" method="post">
 <input type="number" id="numval" min="0" />
 </form>

// Select your input element.
var number = document.getElementById('numval');

// Listener for input element.
 number.onkeydown = function(e) {
if(!((e.keyCode > 95 && e.keyCode < 106)
  || (e.keyCode > 47 && e.keyCode < 58) 
  || e.keyCode == 8)) {
    return false;
}
}

95,&lt; 106对应于Numpad 0到9; 47,&lt; 58对应于Number Row上的0到9;和8是Backspace。

答案 5 :(得分:0)

HTML :

<div ng-app ng-controller="LoginController">
    <input ng-model="number" ng-change="onNumberChange('number')">
</input>
    <input ng-model="number1" ng-change="onNumberChange('number1')">
</input>
    <input ng-model="number2" ng-change="onNumberChange('number2')">
</input>
    <input type="submit" ng-click="login()" value="Login"></input>
</div>

Controller :

function LoginController($scope) {
    $scope.number = -10;
    $scope.number1 = -20;
    $scope.number2 = -30;

$scope.onNumberChange = function(valueName){
    var number  = parseInt($scope[valueName]);
  if(number < 0){
    $scope[valueName] = 0
  }
}

}