Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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 submit函数不触发onsubmit返回函数?_Javascript_Forms_Onsubmit - Fatal编程技术网

Javascript submit函数不触发onsubmit返回函数?

Javascript submit函数不触发onsubmit返回函数?,javascript,forms,onsubmit,Javascript,Forms,Onsubmit,我想我对onsubmit属性有误解。我认为每次提交,比如,或任何javascript表单.submit()都会在提交后触发onsubmit=“return function();”。换句话说,我永远不会看到“上次触发”日志 例如: 函数triggerFirst(){ console.log(“第一次触发”); myForm.submit(); } 函数triggerLast(){ console.log(“上次触发”); 返回true; } HTML表单不需要javascript即可工作。请参

我想我对onsubmit属性有误解。我认为每次提交,比如
或任何javascript
表单.submit()
都会在提交后触发
onsubmit=“return function();”
。换句话说,我永远不会看到“上次触发”日志

例如:

函数triggerFirst(){
console.log(“第一次触发”);
myForm.submit();
}
函数triggerLast(){
console.log(“上次触发”);
返回true;
}

HTML表单不需要javascript即可工作。请参阅以下代码:

<form action="action_page.php">
  First name:<br>
  <input type="text" name="firstname" value="Mickey"><br>
  Last name:<br>
  <input type="text" name="lastname" value="Mouse"><br><br>
  <input type="submit" value="Submit">
</form>

名字:

姓氏:


提交表单后,将运行
声明

是一种内置类型,可触发表单操作运行

请参阅更多信息,它可以正常工作

更新: 将第二个函数放在第一个函数内

函数triggerFirst(){
警惕(“哇”);
触发器()
}
函数triggerLast(){
警报(“wowpsubmit”);
返回true;
}

在triggerFirst函数中,要提交的内部函数调用不起任何作用。未定义提交函数。我想这里你想让函数submit,所以在下面我把对表单的引用传递给了triggerFirst函数。这应该为你澄清一些事情。打开控制台以查看输出

函数触发器优先(表单){
console.log('triggerFirst')
控制台日志(表格);
表单提交();
}
函数triggerLast(){
console.log('triggerLast')
返回true;
}


可能是因为未定义
submit()
是一个错误我的错误。我已经添加了一个id来显式地通过它访问表单。但没有其他行为。添加myForm.submit();在triggerFirst()函数中添加一个alter('wow')到triggerLast()中。然后你看不到第二个“哇”,所以它不起作用。我的示例不是最好的,我的意思是您可以在triggerFirst中执行某些操作,并且只在某些情况下需要使用triggerLast()作为第二次验证。您的示例将永远不会触发triggerLast(),因为输入不会自动提交,或者?这将适用于本示例,但这是一种变通方法。我认为form.submit()将明确地调用onsubmit=“return function();”。但似乎只有
才会调用它。对不起,我还是不明白你的意思。没问题,可能我解释得很模糊。请参见底部的@Rupert的答案。他正是按照我的意思做的,但是如果我运行它,那么submit()函数将提交表单,而不检查onsubmit=“return function()”。这正是我试图做的,但我永远不会看到triggerLast日志:-/。如果我调试它,表单将在form.submit()之后提交,并且永远不会进入triggerLast();