Javascript 忽略“提交”按钮时表单数据验证不起作用

Javascript 忽略“提交”按钮时表单数据验证不起作用,javascript,validation,Javascript,Validation,现在,这是一个Javascript的小测试块,您可以在其中向表单中输入一些值,然后根据这些值计算一些值。值不是直接从表单中读取,而是从一组全局变量中读取,这些全局变量使用load params按钮进行更新 真正困扰我的是,在我的表单中,输入属性type=“number”似乎被忽略了。当我在表单的末尾添加一个提交按钮(我并不想要这个按钮)时,表单会按预期工作——它会阻止我输入除数字字符以外的任何字符。然而,当我删除这个提交按钮时,它似乎并没有进行输入验证 知道为什么吗 var参数={ 答:0,,

现在,这是一个Javascript的小测试块,您可以在其中向表单中输入一些值,然后根据这些值计算一些值。值不是直接从表单中读取,而是从一组全局变量中读取,这些全局变量使用load params按钮进行更新

真正困扰我的是,在我的表单中,输入属性
type=“number”
似乎被忽略了。当我在表单的末尾添加一个提交按钮(我并不想要这个按钮)时,表单会按预期工作——它会阻止我输入除数字字符以外的任何字符。然而,当我删除这个提交按钮时,它似乎并没有进行输入验证

知道为什么吗

var参数={
答:0,,
b:0,
c:0
}
函数parse_inputs(){
document.forms[“input_parameters”]。submit();
params[“a”]=parseFloat(document.getElementById(“input_参数”).a_in.value);
params[“b”]=parseFloat(document.getElementById(“input_参数”).b_in.value);
params[“c”]=parseFloat(document.getElementById(“input_参数”).c_in.value);
}
函数write_params(){
var text=“”
for(参数中的变量参数){
text+=params[param]+“
” } document.getElementById(“demo”).innerHTML=text; } 函数计算和(){ var总和=0 for(参数中的变量参数){ sum+=params[param] } document.getElementById(“demo”).innerHTML=sum; }
CLT计算器
输入参数
a:
b:
c:


加载参数
存储的参数
计算总和

如果不使用submit事件,则要使用preventDefault

你可以试试这个

我移除了诺瓦利达,以获得所需的字段

我还从parseinputs中删除了submit

var参数={
答:0,,
b:0,
c:0
}
函数parse_inputs(){
params[“a”]=parseFloat(document.getElementById(“input_参数”).a_in.value);
params[“b”]=parseFloat(document.getElementById(“input_参数”).b_in.value);
params[“c”]=parseFloat(document.getElementById(“input_参数”).c_in.value);
}
函数write_params(){
var text=“”
for(参数中的变量参数){
text+=params[param]+“
” } document.getElementById(“demo”).innerHTML=text; } addEventListener(“加载”,函数(){ document.getElementById(“输入参数”).addEventListener(“提交”,函数(e){ e、 预防默认值(); var总和=0 for(参数中的变量参数){ sum+=params[param] } document.getElementById(“demo”).innerHTML=sum; }); });
CLT计算器
输入参数
答:
b:
c:


加载参数
存储的参数
计算总和

您似乎不需要首先提交表单?您可以使用现有代码获取
输入
值,而无需使用
提交
。这个怎么样

var参数={
答:0,,
b:0,
c:0
}
var输出=document.getElementById(“演示”);
函数parse_inputs(){
params.a=parseFloat(document.getElementById(“input_参数”).a_in.value);
params.b=parseFloat(document.getElementById(“input_参数”).b_in.value);
params.c=parseFloat(document.getElementById(“input_参数”).c_in.value);
output.textContent=“已加载参数!”;
}
函数write_params(){
var text=“”
for(参数中的变量参数){
text+=params[param]+“
” } output.innerHTML=文本; } 函数计算和(){ var总和=0 for(参数中的变量参数){ sum+=params[param] } output.textContent=总和; }
CLT计算器
输入参数
a:
b:
c:


加载参数
存储的参数
计算总和

感谢您提供的解决方案。出于兴趣,为什么省略submit按钮意味着不执行输入验证?我不确定这是否只是我思考这个问题的方式是错误的。输入一个submit按钮,然后再不点击它,这会使代码的行为完全符合我的要求。我只是希望能够做到这一点,但没有随机提交按钮!您可以执行验证,而不必执行验证,但您必须自己调用它