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

mat*_*gan 2 javascript angularjs

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

Alexander Puchkov创建了一个指令,可以在输入上实现这一点,type="text"但我希望能够使用,type="number"因此我可以在场上维护所有其他属性以进行验证,例如min,max,step等.

我有一个这个指令的例子,不在这里输入数字输入.例如,当type="text"输入123.产生渲染123但是当数字比较时,自前一个值以来的type="number"输入的123.数量相等时.123.123

Ash*_*Ash 5

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

0. == 0
Run Code Online (Sandbox Code Playgroud)

如果您执行以下操作:

setTimeout(() => console.log(element[0].value), 100))
Run Code Online (Sandbox Code Playgroud)

它会一直记录为00.这就是为什么ngModelCtrl不会触发解析器,因为没有检测到任何更改.

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

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