javascript - AngularJS 数字输入忽略除数字之外的所有键

标签 javascript angularjs

我一直在尝试在 AngularJS 模板中创建一个输入,并且该模板只接受整数作为输入。也就是说,我不希望它允许除 0-9 之外的任何键,具体来说,我无法阻止输入中允许使用 .

Alexander Puchkov created a directive在使用 type="text" 的输入上实现这一点,但是我希望能够使用 type="number" 这样我就可以维护该字段上的所有其他属性验证,例如最小值、最大值、步长等。

我有一个这样的例子 directive not working on a number input here 。例如,当 type="text" 输入 123. 时,会生成 123 的渲染,但是当 type="number"时 输入 123. 会产生 123.,因为 123 的先前值在数字比较时相等。

最佳答案

恐怕这是不可能的,因为以下条件成立:

0. == 0

如果您执行以下操作:

setTimeout(() => console.log(element[0].value), 100))

它总是将0.记录为0。这就是 ngModelCtrl 没有触发解析器的原因,因为没有检测到任何更改。

我建议不要直接修改 ngModel 的值(因为这最终也可能导致用户输入无效数据。即,在您的示例中粘贴 12.00 将解析为 1200)

我会添加一个指令,根据是否使用小数点来应用有效性(从技术上讲,输入0.实际上并不使用 它。0.01 是)。如果数字中有小数点,则将有效性设置为 false 并相应地显示错误消息(通过 ngMessages)。这样用户就可以纠正自己的错误并从错误中吸取教训。

关于javascript - AngularJS 数字输入忽略除数字之外的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48105861/

相关文章:

javascript - 使用 ng-model 指令从 select2 中删除空选项

javascript - 隐藏/禁用 <div> 和 <a> onlick of and image 但当它回到原始状态时恢复它们

即使使用正确的语法,JavaScript 仍显示空白值

javascript - 如何将 HTML id 存储为 js 变量?

javascript - 如何在 iScroll 中为滚动条设置动态宽度?

android - 使用 Ionic 在 Android/iOS 上执行外部应用程序

javascript - Angular Js ng-Grid 中是否有在数据加载之前/之后调用的回调函数?

javascript - 不能在 ng-click 函数中使用 .then()

javascript - 我想在失去互联网连接时显示警报消息状态

javascript - Ionic 中的嵌套复选框元素