number类型input标签value属性报错:预期数字却识别到空值如何解决
问题根因
type="number"类型的原生输入框要求value属性必须为合法数值,当property.getId()返回null或空值时,JSP模板渲染后会生成value=""的空值属性,不符合输入框的类型约束,触发取值无效报错。
另外你贴出的代码中存在value属性未闭合双引号的问题,也可能引发属性解析异常,需要先补上。
修复方案
- 方案1:渲染阶段增加空值兜底,适合业务要求ID必须有数值的场景
空值时填充符合业务逻辑的默认数值(示例用0,可自行调整),代码修改如下:<p>Id: <input type="number" name="Id" value="<%= property.getId() == null ? 0 : property.getId() %>"></p> - 方案2:跳过原生数值校验,适合业务允许ID为空的场景
给输入框添加novalidate属性跳过浏览器原生的类型校验,后续可自行通过JS做提交前的数值合法性校验,代码修改如下:<p>Id: <input type="number" name="Id" value="<%= property.getId() %>" novalidate></p>
内容的提问来源于stack exchange,提问作者Raman
相关产品推荐
相关产品推荐

