所以当我使用 JS 并尝试提交输入时,我尝试了一些事情,但有一些奇怪的事情我不理解逻辑。
<input tpye="submit/>
之间存在差异。<form>
的内部和外部标签。如果它位于表单标签内,我需要使用preventDefault()
函数,但如果它在表单标记之外,如果编写简单的 js 普通代码,我不需要这样做。 这是为什么?onsubmit 和 onclick 之间有什么区别?特别是在表单标签中。因为如果我使用 onsubmit js 代码实际上不起作用。
如果我使用
preventDefault(event)
它阻止表单发送到服务器,而是仅使用浏览器进行计算?
谢谢!
最佳答案
默认情况下,如果表单中有“提交”类型的输入,则单击该输入(或在表单中填写任何输入后按回车键)将向服务器发送 post 或 get 请求,重定向当前的输入页面到服务器的响应。
这是向服务器提交表单数据的原始方法,无需使用 JavaScript。如果您想防止这种情况发生,您可以用普通按钮 ( <button onclick="doSomething()">Submit</button>
) 替换提交输入,或阻止默认提交事件: ( form.onsubmit = event => event.preventDefault()
)。
onsubmit
之间的区别和onclick
是onsubmit
仅当从表单发出提交事件时触发。要发出提交事件,表单需要 <input type="submit">
被点击,或者用户通过按回车键触发提交。
防止这种默认行为的另一种方法是 return false
在提交处理程序中。
onclick
仅当单击元素时才会触发。因为 javascript 中的事件会传播到父级,所以这也会触发任何 onclick
所有父元素上的处理程序。
如果您想完全忽略默认的表单提交行为,那么您可以定义一个带有 onclick 处理程序的按钮来处理您的自定义提交逻辑。
关于javascript - PreventDefault 和 type Submit 如何与表单配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59201401/