簡體   English   中英

JavaScript:函數“提交”時,表單onSubmit不起作用

[英]JavaScript: Form onSubmit does not work when function is called 'submit'

單擊表單的提交按鈕時,我試圖調用JavaScript函數。

由於某種原因,該函數在命名為“ submit”時不會被調用,但是在命名其他任何名稱時,它都可以工作。

我還應注意,當按鈕從表單標簽中取出時,該功能也起作用。

誰能解釋為什么它在表單中不能使用該名稱?

這是代碼:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript"> 
            function submit(){
               console.log('test');
            }
        </script>
    </head>     
    <body>
        <form>
            <input type="text"/>
            <input type="submit" onclick="submit()"/>
        </form>
    </body>
</html>

因為submit()是在核心JS中提交表單的保留函數。

例如,如果您的表單的ID如myform ,則可以通過JS提交:

document.form['myform'].submit();

因此,調用該函數實際上是在提交表單,而不是調用自定義函數。

編輯 :我忘了提及,它僅在表單內有效,因為它正在調用該表單的Submit函數。 除此之外,它不再可用(因為body標簽沒有提交功能)。

表單元素放置在表單中的偵聽器作用域鏈上,就像通過以下方式:

with (form) {
  /* run listener code */
}

因此,標識符提交首先在處理程序的上下文中解析,然后在范圍鏈其余部分之前的表單上解析。 這是表單所獨有的,可以在以下內容中看到:

<form>
  <input name="foo">
  <input type="button" value="Do click" onclick="
    function submit(){console.log('click')};
    submit();
  ">
</form>

其中單擊該按鈕可在偵聽器中運行Submit函數,而刪除該函數的聲明將運行表單的Submit方法。 這是表格所獨有的。

請注意,直接調用表單的Submit方法時,不會調用其Submit處理程序。

在表單之外,標識符提交以常規方式解析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM