当前位置: 首页 > 面试题库 >

角度指令忽略非数字输入

谷梁宁
2023-03-14
问题内容

我必须为IE8写一些代码。我有一个ng-repeat创建一个充满以下内容的表:

<input production-qty type="text" class="input-mini" maxlength="3" ng-model="day.qtyA" ui-event="{ blur : 'updateProduction(day)' }" ng-disabled="day.type=='H'">

IE8不会输入type = number

我想要一个指令,该指令将忽略该输入字段上不是数字键的击键....即.... 0-9

我不想让用户键入abc并污染模型,然后告诉他们该值无效。我宁愿不要让他们输入任何无效的数据。


问题答案:

HTML:

<input production-qty type="text" maxlength="3" ng-model="qty1">

指示:

app.directive('productionQty', function() {
  return {
    require: 'ngModel',
    link: function (scope, element, attr, ngModelCtrl) {
      function fromUser(text) {
        var transformedInput = text.replace(/[^0-9]/g, '');
        console.log(transformedInput);
        if(transformedInput !== text) {
            ngModelCtrl.$setViewValue(transformedInput);
            ngModelCtrl.$render();
        }
        return transformedInput;  // or return Number(transformedInput)
      }
      ngModelCtrl.$parsers.push(fromUser);
    }
  }; 
});

柱塞

另请参见input中有关ng-model的过滤器。我上面的答案是基于pkozlowski.opensource的答案建模的。

我看了ng-pattern,但是它不能过滤文本框中显示的内容。设置$scope.qty1undefined,但是不需要的字符在文本框中可见。



 类似资料:
  • 当在输入字段中按下enter键时,我使用这个答案中的指令来运行一个函数。 如何传递输入字段到指令调用的函数?或者将输入字段元素传递给函数,以在检索后清除值。 HTML JS公司

  • 当包装一个Bulma“field”样式的元素在一个有角度的组件中时,底部的边距是缺失的。field类是通过指令添加到组件中的,这是根据浏览器的正常工作。 我怀疑选择器可能有问题,但我想不出原因。 Stackblitz演示 app.component.html input.component.html Input.Component.TS 这个问题在某种程度上建立在这个答案的基础上

  • 问题内容: 我正在尝试使用Angular的“装饰器”功能向某些指令添加功能。假设我的指令名称是myDirective。我的代码如下所示: ]); 我不断收到此消息: 尽我所能,指令在装饰器函数运行时已被注册。任何见识将不胜感激! 问题答案: 本文说明了实际上如何将带指令的decorator()使用。 您只需将“指令”作为名称的后缀即可。因此,在我的示例中,我应该一直在做 http://angula

  • 问题内容: 我想对第3方指令(特别是Angular UI Bootstrap)进行较小的修改。我只是想添加指令的范围: 但是我也想让Bower与Angular-Bootstrap保持同步。运行后,我将覆盖所做的更改。 那么,如何与该Bower组件分开扩展该指令? 问题答案: 解决此问题的最简单方法可能是在您的应用上创建与第三方指令同名的指令。这两个指令都将运行,并且您可以使用属性指定运行顺序(优先

  • 问题内容: 我有这样的标记: 我希望在用户在第二个输入中意外键入字母时显示跨度。简单吧?作为(可能)相关的问题,当用户移动第一滑块输入时,第二输入中的值消失。为什么?如果我从标记中删除,则不会发生这种情况。 明确说明:我希望用户在键入工具提示时立即看到错误,而无需执行任何“提交”操作。(我不希望实际上根本不需要使用该元素,但是所有相关的演示似乎都需要它。) http://jsfiddle.net/

  • 问题内容: 我有一个带有变量类型的指令myDirective。如果我运行,我希望指令使用templateUrl:x-template.html。如果我愿意,指令可以使用templateUrl:y-template.html。 这是我目前的指令。 我通过stackoverflow和angular文档阅读,但是没有找到我需要的任何东西。 我现在正在尝试按照以下方式进行操作: 但是不知道在哪里做。 你们