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



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

Alexander Puchkov 创建了一个指令,该指令在具有 type="text" 的输入上实现了这一点,但我希望能够使用type="number",以便我可以在字段上维护所有其他属性以进行验证,例如最小值、最大值、步长等。

我有一个这个指令在这里不适用于数字输入的示例。例如,当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(。这样,用户可以纠正自己的错误,并从错误中吸取教训。

最新更新