【问题标题】:how to have one decimal point for numbers using angularJS如何使用angularJS为数字保留一位小数
【发布时间】:2017-06-14 02:52:00
【问题描述】:

我已经看到了一些关于 regExp 的东西,但出于某种原因,我认为这应该更简单。也许不吧。也许 regExp 非常适合这个,我不明白这个概念。哪个,我没有。我不明白 regExp,这就是我没有使用它的原因。

但我想做的是使用 AngularJS 构建一个基本的计算器。我的计算器对我的等号有一个 ng-disable 功能。因此,在单击 leftOperand、operand 和 rightOperand 之前,它不允许被按下并且不会起作用。 现在我不想在单击时禁用小数点,因为我的 rightOperand 可能需要它。

但本质上我希望我的代码反映“如果有一个运算符,那么 rightOperand 是 rightOperand + 输入的任何其他操作数。否则,leftOperand 将等于 leftOperand + 输入的任何其他操作数。(这是目前正在工作,例如 333 + 45948594 有效。小数点也有效。但是!它可以允许 333.464.6454,我不希望这样)。

尝试实现: Also/And/Or/如果将小数放入 leftOperand,则 leftOperand 不允许使用其他小数。如果 rightOperand 有小数,则 rightOperand 不允许有其他小数。

最简单的方法是什么?

https://codepen.io/tevon/pen/Moewba

这是我的 setDecimal 方法,但它允许左右操作数多于 1 个小数

$scope.setDecimal = function (decimalEntered) {
        if ($scope.operator){
            $scope.rightOperand += decimalEntered;
        };
        else {$scope.leftOperand += decimalEntered;
        };

我给出的是这样的: if string.indexOf('.') > -1 // then do something 但老实说,我不确定“做某事”部分如何工作,-1 部分也不知道

不使用 Jquery。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    因此,您将操作数构建为字符串。这意味着您可以使用 .indexOf 测试您当前在作用域上拥有的操作数,看看它是否有意义。

    if (myVariable.indexOf('.') === -1) myVariable += '.';

    【讨论】:

      【解决方案2】:

      当您考虑 indexOf 时,您是对的 - 如果那里已经有点,您只需要停止执行此方法 - 最简单的方法是 return

      if ($scope.rightOperand.indexOf('.')>-1) return;
      

      LINK

      【讨论】:

      • 嗯,这是来自@jsdevel 的提示,我不相信
      • 我没有得到它的 -1 部分
      • 请参考indexOf secription - ">-1" 表示找到参数中给出的字符串 - 表示点已经存在。
      猜你喜欢
      • 1970-01-01
      • 2021-06-05
      • 1970-01-01
      • 2022-12-07
      • 2022-10-12
      • 2020-05-01
      • 2014-02-08
      • 2018-06-16
      • 2011-06-14
      相关资源
      最近更新 更多