Javascript HTML输入类型=数字步骤阻止表单提交
我有以下HTML代码:Javascript HTML输入类型=数字步骤阻止表单提交,javascript,html,Javascript,Html,我有以下HTML代码: <input type="number" step="0.1" class="form-group"> 我希望用户能够输入3位十进制数字,如1.234,但step需要0.1,它会抛出错误并阻止表单提交 我已经尝试了step=“0.100”,但结果是一样的 我还需要验证其他输入,因此我不能在标记中使用no-validate 需要做什么?您可以使用novalidate并用js为其他表单字段编写自己的验证 提交 一个想法是您可以删除步骤属性,禁用+/-滑块
<input type="number" step="0.1" class="form-group">
我希望用户能够输入3位十进制数字,如1.234
,但step
需要0.1
,它会抛出错误并阻止表单提交
我已经尝试了step=“0.100”
,但结果是一样的
我还需要验证其他输入,因此我不能在
标记中使用no-validate
需要做什么?您可以使用
novalidate
并用js为其他表单字段编写自己的验证
提交
一个想法是您可以删除步骤
属性,禁用+/-滑块按钮,并实现自己的+/-按钮。然后,当用户单击这些按钮时,会调用一个JavaScript函数来检索输入区域中的值,将其转换为数字,并执行所需的步骤
使用0.1这样的步骤可能会遇到精度问题。在下面的代码片段中,我刚刚将小数位数固定为2
功能步进(step){
设num=Number(document.getElementById('value').value);
document.getElementById('value').value=(num+step).toFixed(2);
}
功能降压(step){
设num=Number(document.getElementById('value').value);
document.getElementById('value').value=(num-step).toFixed(2);
}
input[type=number]:-webkit内部旋转按钮,
输入[类型=编号]:-webkit外部旋转按钮{
-webkit外观:无;
保证金:0;
}
-
+
我会编写一个小型的自定义内置自定义元素来实现:
类MyInput扩展了HTMLInputElement{
构造函数(步长=0.1,值=“”){
超级();
this.type='number';
this.step=this.getAttribute('step')| | step;
this.value=this.getAttribute('value')|| value;
this.addEventListener('input',(e)=>{
this.value=parseFloat(this.value)+0.034;
})
}
}
define('my-input',MyInput,{extends:'input'});
让输入=新的MyInput(0.1,1);
document.body.appendChild(输入)代码>
你能更详细地解释一下吗?您说步骤
需要是0.1
,但它应该允许类似1.234
的值。这是否意味着您需要诸如0.134
、0.234
、0.334
等值?3位小数,但步长为0.1?如果您想允许1.234,为什么不执行步骤0.001?我想您可能需要步长=“0.001”?那么您不能有像1.234这样的值。您可以有一个或另一个,不能同时有两个。@AlirezaA2F您可以完全删除step
变量并添加eventlisteners来手动管理step。我还需要验证其他输入,因此我不能使用no validate
。