我一直在尝试在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
的值是相等的。
答案 0 :(得分:5)
我担心这是不可能的,因为以下条件成立:
setTimeout(() => console.log(element[0].value), 100))
如果您执行以下操作:
user_answer
始终将 0。记录为 0 。这就是ngModelCtrl没有触发解析器的原因,因为没有检测到任何更改。
我建议不要直接修改ngModel的值(因为这也会导致用户输入无效数据。即粘贴12.00将以你的例子解析为1200)
我会根据小数点使用添加一个适用有效性的指令(从技术上讲,输入 0。实际上不是使用 it。 0.01 是)。如果数字中有小数点,则将有效性设置为false,并相应地显示错误消息(通过ngMessages)。通过这种方式,用户可以纠正自己的错误,并可以从错误中吸取教训。