[英]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.