如何在Apache FreeMarker表单中传递浮点值?type=number仅支持整数
解决Apache FreeMarker表单浮点值输入问题
方法1:给type=number添加step属性
HTML5的type=number默认仅允许整数输入,添加step属性可指定允许的小数精度,同时保留数字输入的原生校验功能。示例FreeMarker代码:
<input type="number" name="floatValue" step="0.01" value="${yourFloatValue?default('')}">
step="0.01"允许两位小数,可按需改为0.1(一位小数)或其他精度值- 若需支持任意精度小数,可设置
step="any",但部分浏览器兼容性略差,推荐使用具体精度值
方法2:type=text配合pattern正则校验
如果需要自定义校验规则,可使用text类型结合HTML5的pattern属性,提交时浏览器会自动校验格式:
<input type="text" name="floatValue" pattern="^\d+(\.\d+)?$" title="请输入有效的浮点数值(整数或小数)" value="${yourFloatValue?default('')}">
pattern="^\d+(\.\d+)?$"匹配整数或带小数点的浮点数title属性用于校验不通过时显示的提示信息
方法3:JavaScript实时输入过滤
若要实时阻止非法输入(比如字母、多个小数点),可给text类型输入框添加JS事件:
<input type="text" name="floatValue" oninput="this.value = this.value.replace(/[^0-9.]/g, ''); if(this.value.split('.').length>2) this.value = this.value.slice(0, -1);" value="${yourFloatValue?default('')}">
- 这段JS会自动过滤非数字和小数点的字符,同时限制仅能输入一个小数点
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

