我有一个<input type="number">,我想将用户的输入限制为纯数字或带有小数点后最多2位的数字。
基本上,我是在要求一个价格输入。
我想避免使用正则表达式。有办法吗?
<input type="number" required name="price" min="0" value="0" step="any">
我有一个<input type="number">,我想将用户的输入限制为纯数字或带有小数点后最多2位的数字。
基本上,我是在要求一个价格输入。
我想避免使用正则表达式。有办法吗?
<input type="number" required name="price" min="0" value="0" step="any">
当前回答
<input type="number" class="form-control" id="price" oninput="validate(this)" placeholder="Enter price" name="price" style="width:50%;">
var validate = function(e) {
var t = e.value;
e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) + t.substr(t.indexOf("."), 3)) : t;
}
其他回答
只写
<input type="number" step="0.1" lang="nb">
Lang ='nb"让你用逗号或句号来写小数
你可以用这个。反应钩子
输入< 类型=“当家” name = "价格" 普莱斯placeholder =“回车” 一步=“任何” 所需 />
使用step="而不是step="any",因为它允许小数位数任意。“01”,最多允许小数点后两位。
更多详细信息见规范:https://www.w3.org/TR/html/sec-forms.html#the-step-attribute
试着在输入类型中只允许2个小数
<input type="number" step="0.01" class="form-control" />
或者使用jQuery的建议@SamohtVII
$( "#ELEMENTID" ).blur(function() {
this.value = parseFloat(this.value).toFixed(2);
});
如果有人正在寻找一个正则表达式,只允许数字与可选的2小数点后
^\d*(\.\d{0,2})?$
例如,我发现下面的解决方案相当可靠
HTML:
<input name="my_field" pattern="^\d*(\.\d{0,2})?$" />
JS / JQuery:
$(document).on('keydown', 'input[pattern]', function(e){
var input = $(this);
var oldVal = input.val();
var regex = new RegExp(input.attr('pattern'), 'g');
setTimeout(function(){
var newVal = input.val();
if(!regex.test(newVal)){
input.val(oldVal);
}
}, 1);
});