使用 vue.js 验证输入 - v-model.number 的真正含义是什么?

Joh*_*ore 10 vue.js

如果我指定我的输入字段是数字,则v-model.number在提交表单(或者更确切地说,将 JSON 发布到服务器)之前我可以做出哪些假设来验证数字输入?即,我是否可以假设此时它始终是一个数字,因此可以集中精力测试它是否落在某个范围内?或者我还需要测试 isNan 等吗?

Ben*_*ngt 10

我查了一下消息来源。后缀 with.number会导致输入值(即使对于 也是一个字符串type="number")通过以下函数进行解析:

/**
 * Convert a input value to a number for persistence.
 * If the conversion fails, return original string.
 */
export function toNumber (val: string): number | string {
  const n = parseFloat(val)
  return isNaN(n) ? val : n
}
Run Code Online (Sandbox Code Playgroud)

这意味着您不能假设结果始终是数字,但可以假设它永远不是 NaN。然而,官方文档中没有明确说明这一点,因此可能会发生变化。我建议type="number"如果可能的话继续使用,否则像平常一样进行验证。