Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML输入类型=数字步骤阻止表单提交_Javascript_Html - Fatal编程技术网

Javascript 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为其他表单字段编写自己的验证 提交 一个想法是您可以删除步骤属性,禁用+/-滑块

我有以下HTML代码:

<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