Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何限制输入';javascript的值是多少?_Javascript_Angularjs_Html - Fatal编程技术网

如何限制输入';javascript的值是多少?

如何限制输入';javascript的值是多少?,javascript,angularjs,html,Javascript,Angularjs,Html,我需要将输入值限制为[1500000]。我想用编程的方式来做。我正在为我的web应用程序使用AngularJS。以下是我编写的代码: html js angular.module(“app”,[]).controller(“controller”,function($scope){ $scope.checkLimit=函数(){ $scope.data.flips=$scope.data.flips>5000000?5000000: $scope.data.flips; $scope.dat

我需要将输入值限制为[1500000]。我想用编程的方式来做。我正在为我的web应用程序使用AngularJS。以下是我编写的代码:

html


js

angular.module(“app”,[]).controller(“controller”,function($scope){
$scope.checkLimit=函数(){
$scope.data.flips=$scope.data.flips>5000000?5000000:
$scope.data.flips;
$scope.data.flips=$scope.data.flips<1?1:$scope.data.flips;
}
});

我肯定知道函数会运行,但输入字段和变量中的值不会更新。我是一个比较新的角度,所以可能有一些基本的概念,我错过了

编辑:有关更清晰的版本,请参见cccross的答案

您需要跳出当前的摘要周期,因为我不相信angular会使用新的属性值更新元素,如果属性值是在该元素的更改事件中更新的

可能有更干净的方法来满足你的要求;然而,这个例子是有效的。我删除了“min”和“max”输入属性,并将ng change listener逻辑移到了“$timeout”调用中$超时作为控制器参数包含$超时将触发另一个摘要周期,它将更新您的输入

angular.module("app", []).controller("controller", function($scope, $timeout) {
    $scope.checkLimit = function() {
        $timeout(() => {
            $scope.data.flips = $scope.data.flips > 5000000 ? 5000000 : 
            $scope.data.flips;
            $scope.data.flips = $scope.data.flips < 1 ? 1 : $scope.data.flips;
        })
    }
});
angular.module(“app”,[]).controller(“controller”,函数($scope,$timeout){
$scope.checkLimit=函数(){
$timeout(()=>{
$scope.data.flips=$scope.data.flips>5000000?5000000:
$scope.data.flips;
$scope.data.flips=$scope.data.flips<1?1:$scope.data.flips;
})
}
});

编辑:有关更清晰的版本,请参见cccross的答案

您需要跳出当前的摘要周期,因为我不相信angular会使用新的属性值更新元素,如果属性值是在该元素的更改事件中更新的

可能有更干净的方法来满足你的要求;然而,这个例子是有效的。我删除了“min”和“max”输入属性,并将ng change listener逻辑移到了“$timeout”调用中$超时作为控制器参数包含$超时将触发另一个摘要周期,它将更新您的输入

angular.module("app", []).controller("controller", function($scope, $timeout) {
    $scope.checkLimit = function() {
        $timeout(() => {
            $scope.data.flips = $scope.data.flips > 5000000 ? 5000000 : 
            $scope.data.flips;
            $scope.data.flips = $scope.data.flips < 1 ? 1 : $scope.data.flips;
        })
    }
});
angular.module(“app”,[]).controller(“controller”,函数($scope,$timeout){
$scope.checkLimit=函数(){
$timeout(()=>{
$scope.data.flips=$scope.data.flips>5000000?5000000:
$scope.data.flips;
$scope.data.flips=$scope.data.flips<1?1:$scope.data.flips;
})
}
});

由于此验证不允许更改ng模型,您需要删除min和max属性

备选方案如果要保持最小值和最大值,可以添加ng模型选项,如下所示:


由于此验证不允许更改ng模型,您需要删除min和max属性

备选方案如果要保持最小值和最大值,可以添加ng模型选项,如下所示:


您是否调试了脚本以查看
$scope.data.flips
的值是多少?您是否调试了脚本以查看
$scope.data.flips
的值是多少?查看我的答案以获得更清晰的解决方案我认为您的答案不正确-您的答案无法更新输入元素中显示的值。它起作用了。它更新输入中的模糊事件数据。如果要立即更新,请从ng模型选项中删除updateOn:“blur”。但我想onblur对用户来说是友好的。我本可以创建一个糟糕的示例,但我看不出你的答案在这个问题上有什么作用:错误的fiddle链接。下面是正确的链接:请参阅我的答案以获得更清晰的解决方案我认为你的答案不正确-你的答案无法更新输入元素中显示的值。它起作用了。它更新输入中的模糊事件数据。如果要立即更新,请从ng模型选项中删除updateOn:“blur”。但我想onblur对用户来说是友好的。我本可以创建一个糟糕的示例,但我看不出你的答案在这个问题上有什么作用:错误的fiddle链接。以下是正确的链接:JIC:它更新输入中的模糊事件数据。如果要立即更新,请从ng模型选项中删除updateOn:“blur”。但是我想它对onblur.JIC是用户友好的:它更新输入中关于blur事件的数据。如果要立即更新,请从ng模型选项中删除updateOn:“blur”。但我想它是用户友好的onblur。
angular.module("app", []).controller("controller", function($scope, $timeout) {
    $scope.checkLimit = function() {
        $timeout(() => {
            $scope.data.flips = $scope.data.flips > 5000000 ? 5000000 : 
            $scope.data.flips;
            $scope.data.flips = $scope.data.flips < 1 ? 1 : $scope.data.flips;
        })
    }
});