AngularJS数字输入忽略所有键但数字

时间:2018-01-05 01:13:32

标签: javascript angularjs

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

Alexander Puchkov created a directive在使用type="text"的输入上实现此目的但是我希望能够使用type="number"以便我可以在字段上维护所有其他属性以进行验证,例如min,max ,步骤等。

我有一个这个directive not working on a number input here的例子。例如,当type="text" 123.的输入产生123的呈现但是当type="number"输入123.时产生123.当用数字比较时,123的值是相等的。

1 个答案:

答案 0 :(得分:5)

我担心这是不可能的,因为以下条件成立:

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

如果您执行以下操作:

user_answer

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

我建议不要直接修改ngModel的值(因为这也会导致用户输入无效数据。即粘贴12.00将以你的例子解析为1200)

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