preventDefault 和 type submit 如何处理表单?
How does preventDefault and type submit work with forms?
所以当我使用 JS 并尝试提交输入时,我尝试了一些事情,但有些奇怪的事情我不明白其中的逻辑。
<form>
标签内部和外部 <input tpye="submit/>
有区别。如果它在表单标签内,我需要使用 preventDefault()
函数,但如果它在表单标签外,如果编写简单的 js 香草代码,我不需要这样做。
这是为什么?
onsubmit 和 onclick 有什么区别?特别是在表单标签中。因为如果我使用 onsubmit,那么 js 代码将无法正常工作。
如果我使用 preventDefault(event)
它会阻止将表单发送到服务器,而是仅使用浏览器进行计算 ?
谢谢!
默认情况下,如果您在表单中输入 "submit" 类型,则单击该输入(或在表单中填写任何输入后按回车键)将发送 post 或获取向服务器请求,将当前页面重定向到服务器的响应。
这是在不使用 javascript 的情况下向服务器提交表单数据的原始方式。如果您想防止这种情况发生,您可以将提交输入替换为普通按钮 (<button onclick="doSomething()">Submit</button>
),或者阻止默认提交事件:(form.onsubmit = event => event.preventDefault()
).
onsubmit
和 onclick
之间的区别在于 onsubmit
仅在表单发出提交事件时触发。要发出提交事件,表单需要单击 <input type="submit">
,或者用户通过按回车键触发提交。
另一种防止这种默认行为的方法是在提交处理程序中 return false
。
onclick
仅在单击元素时触发。因为 javascript 中的事件向上传播到父元素,所以这也会触发所有父元素上的任何 onclick
处理程序。
如果您想完全忽略默认的表单提交行为,那么您可以定义一个带有 onclick 处理程序的按钮来处理您的自定义提交逻辑。
如果你有一个 type="submit"
输入(注意,The default value for the type attribute of button elements is "submit") inside a form, the default action on click is to submit that form. To prevent it from submitting, place the button outside the </form>
. This works because the button doesn't refer to any form to submit. You can instead, add a listener and call event.preventDefault()
。这是有效的,因为你告诉浏览器不要接受默认操作(提交表单)
onsubmit
主要用于 <form>
元素。无论提交方式如何,它都会在提交表单之前触发。 onclick
几乎可以从任何元素发出。当您单击一个元素时它会发生。这可能在 <input>
、<button>
上。甚至整个 <form>
不要使用这个。
所以当我使用 JS 并尝试提交输入时,我尝试了一些事情,但有些奇怪的事情我不明白其中的逻辑。
<form>
标签内部和外部<input tpye="submit/>
有区别。如果它在表单标签内,我需要使用preventDefault()
函数,但如果它在表单标签外,如果编写简单的 js 香草代码,我不需要这样做。 这是为什么?onsubmit 和 onclick 有什么区别?特别是在表单标签中。因为如果我使用 onsubmit,那么 js 代码将无法正常工作。
如果我使用
preventDefault(event)
它会阻止将表单发送到服务器,而是仅使用浏览器进行计算 ?
谢谢!
默认情况下,如果您在表单中输入 "submit" 类型,则单击该输入(或在表单中填写任何输入后按回车键)将发送 post 或获取向服务器请求,将当前页面重定向到服务器的响应。
这是在不使用 javascript 的情况下向服务器提交表单数据的原始方式。如果您想防止这种情况发生,您可以将提交输入替换为普通按钮 (<button onclick="doSomething()">Submit</button>
),或者阻止默认提交事件:(form.onsubmit = event => event.preventDefault()
).
onsubmit
和 onclick
之间的区别在于 onsubmit
仅在表单发出提交事件时触发。要发出提交事件,表单需要单击 <input type="submit">
,或者用户通过按回车键触发提交。
另一种防止这种默认行为的方法是在提交处理程序中 return false
。
onclick
仅在单击元素时触发。因为 javascript 中的事件向上传播到父元素,所以这也会触发所有父元素上的任何 onclick
处理程序。
如果您想完全忽略默认的表单提交行为,那么您可以定义一个带有 onclick 处理程序的按钮来处理您的自定义提交逻辑。
如果你有一个
type="submit"
输入(注意,The default value for the type attribute of button elements is "submit") inside a form, the default action on click is to submit that form. To prevent it from submitting, place the button outside the</form>
. This works because the button doesn't refer to any form to submit. You can instead, add a listener and callevent.preventDefault()
。这是有效的,因为你告诉浏览器不要接受默认操作(提交表单)onsubmit
主要用于<form>
元素。无论提交方式如何,它都会在提交表单之前触发。onclick
几乎可以从任何元素发出。当您单击一个元素时它会发生。这可能在<input>
、<button>
上。甚至整个<form>
不要使用这个。