Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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 HTML输入-AngularJS-显示的数字不超过3位_Javascript_Html_Angularjs_Input_Filter - Fatal编程技术网

Javascript HTML输入-AngularJS-显示的数字不超过3位

Javascript HTML输入-AngularJS-显示的数字不超过3位,javascript,html,angularjs,input,filter,Javascript,Html,Angularjs,Input,Filter,当我在输入框中输入一个不包含小数或更多的4位数字时,当我单击out blur时,它会突然从数字输入框中消失。是货币过滤器在起作用吗 如果我将其记录到控制台,模型仍保留该值,它只是从视图中消失 <div class="input-group col-sm-2"> <div class="input-group-addon">$</div> <input type="number" step="any" min="0" class="form

当我在输入框中输入一个不包含小数或更多的4位数字时,当我单击out blur时,它会突然从数字输入框中消失。是货币过滤器在起作用吗

如果我将其记录到控制台,模型仍保留该值,它只是从视图中消失

<div class="input-group col-sm-2">
    <div class="input-group-addon">$</div>
    <input type="number" step="any" min="0" class="form-control" id="promoSetupFee" data-ng-model="fees.setup.promo" data-ng-format-curr data-ng-blur="updateSetupTotal()">
</div>
编辑:似乎number类型的HTML输入不接受逗号,是否有任何方法可以从指令中删除逗号

编辑:


编辑:快速修复是使用类型文本而不是数字作为输入,但这意味着模型现在将是字符串而不是浮点数。

要从字符串中删除逗号,请执行以下操作:

element.val($filter('currency')((element.val().replace(',','') || 0), '', 2));

我用了亚历克斯答案的一个变体。基本上,由于货币过滤器添加了逗号,所以我必须在应用过滤器之后和发送到输入框之前立即删除它们

crtPromoDir.directive('ngFormatCurr', ['$timeout', '$filter', function($timeout, $filter)
{
    return {
        link: function(scope, element, attrs)
        {
            $timeout(function()
            {
                element.val($filter('currency')((element.val() || 0.00), '', 2).replace(',',''));
            });

            element.blur(function()
            {
                element.val($filter('currency')((element.val() || 0.00), '', 2).replace(',',''));
            });
        }
    };
}]);

这允许我将模型保持为int,并避免使用字符串值。

很可能不是货币过滤器。这个函数是什么updateSetupTotal?请参阅我添加的编辑。为什么要对美元金额使用float?应该使用ng model controller并更新viewValue。方法是错误的我以前没有使用货币过滤器,所以我忘了删除这些parseFloat函数,我现在要做的就是。这没有做任何事情,同样的问题。你问,似乎number类型的HTML输入不接受逗号,有没有办法从我的指令中删除逗号?这将从输入中删除逗号。它解决了这个问题。我理解,但出于某种原因,当我模糊输入框时,它仍然会使值消失。看到我的答案,必须进行更改。哦,你正在使用过滤器将字符串转换为数值?我不一定同意这种方法,但如果它对你有效,那么我想它会解决问题。我个人会做我自己的逻辑转换为数字,并使用过滤器仅用于显示。HTML输入数字输入类型是一个int。如果我登录到控制台,输入框的值将显示一个int,而不是像文本类型那样的字符串。或者我在这里搞混了吗?:过滤器格式化表达式的值以显示给用户。它们可以在视图模板、控制器或服务中使用,并且很容易定义自己的过滤器。检查它是否为数字的一种方法是将可疑值包装在isNaN值中。如果返回true,那么它不是一个数字。如果返回false,则它是一个numberI did console.logisNaNelement.val;在应用过滤器之前启用模糊,并设置为false。
element.val($filter('currency')((element.val().replace(',','') || 0), '', 2));
crtPromoDir.directive('ngFormatCurr', ['$timeout', '$filter', function($timeout, $filter)
{
    return {
        link: function(scope, element, attrs)
        {
            $timeout(function()
            {
                element.val($filter('currency')((element.val() || 0.00), '', 2).replace(',',''));
            });

            element.blur(function()
            {
                element.val($filter('currency')((element.val() || 0.00), '', 2).replace(',',''));
            });
        }
    };
}]);