总结:form中使用onSubmit="return false"防止表单自动提交,以及s...

最近看书对form中onsubmit="return false;"不明白。现在知道了那样做是要防止表单的自动提交。

下面这篇文章总结的非常全,自己就直接拿过来修改总结了。

自动提交­在页面form中有多个input type="text"的文本输入框的情况下没有问题,但是当页面中有只有一个文本框的情况下(),就会出现此问题.­

­后来在form 中添加:onsubmit="return false;"问题终于解决。­

­<form name="form1" method="post" onsubmit="return false;">­

­下边对“防止表单自动提交,以及submit和button提交表单”进行了些总结,希望对大家有些用(不当的地方请指出)。­

­<head> ­

<script>­

­function exec(p){ ­

     document.form2.action = p; ­

     document.form2.submit(); ­

} ­

function exec1(p){ ­

     document.form2.action = p; ­

     document.form2.submit(); ­

     document.form1.submit();//IE页面定位到最后一个提交的action所对应的页面 ­

     alert("Hello!Oyster");//submit()后边的语句正常执行,这里弹出框文字”Hello!Oyster“ ­

} ­

</script> ­

<!--后面例子中要用到的js函数-->

</head> ­

 

(1) 下边的写法使得表单form能够自动提交 ­

下边的这个form,将鼠标点进的文本框中然后按键盘的回车键,则页面自动进入百度页面:http://www.baidu.com ­

<form name='form1' action="http://www.baidu.com"> ­

     <input type="text" name= "UserName1"/> ­

     <input type="hidden" name= "Password1"/> ­

</form>­

­注意:将上边的“<input type="hidden" name= "userName1"/>”去掉或者增加上,也不能改变页面的自动提交! ­

 

­(2)而同样的写法,进行如上的操作,却不会提交 ­

可能是有两个文本输入框的缘故(注意:上边仅有一个)。 ­

那如果一个页面中有多个from会怎样??后边有相关试验。­

­<form name='form1' action="http://www.baidu.com"> ­

     <input type="text" name= "UserName1"/> ­

     <input type="text" name= "Password1"/> ­

</form> ­

­

(3)下面试试,同一个页面有多个from的情况 ­

这里先试试多个form、每个form中仅有一个文本输入框 ­

<form name='form1' action="http://www.baidu.com"> ­

     <input type="text" name= "UserName1"/> ­

     <input type="hidden" name= "Password1"/> ­

</form> ­

<form name='form2' action="http://www.google.cn/"> ­

     <input type="text" name= "UserName2"/> ­

</form> ­

经试验,每个from在只有1个文本输入框都具有自动提交的能力。 ­

 

(4)下面试试,同一个页面有多个from的情况 ­

这里先试试多个form、有的form中仅有一个文本输入框,有的form中则有多个文本输入框 ­

<form name='form1' action="http://www.baidu.com"> ­

     <input type="text" name= "UserName1"/> ­

     <input type="text" name= "Password1"/> ­

</form> ­

<form name='form2' action="http://www.google.cn"> ­

     <input type="text" name= "UserName2"/> ­

</form> ­

<form name='form3' action="http://www.yahoo.com"> ­

     <input type="text" name= "UserName3"/> ­

     <input type="text" name= "Password3"/> ­

</form> ­

经试验,只有 form2 具有自动提交的特性。­

看来:只要页面中的某个表单中仅有一个文本输入框,则其页面就具有自动提交的特性了。 ­

(5)如何防止页面自动提交?! ­

很简单!只要在from 中加上 onSubmit="return false;"就OK了! ­

<form name='form1' action="http://www.baidu.com"> ­

     <input type="text" name= "UserName1"/> ­

     <input type="text" name= "Password1"/> ­

</form> ­

<form name='from2' action="http://www.google.cn" onSubmit="return false;"> ­

     <input type="text" name= "UserName2"/> ­

</form>­

呵呵,经过onSubmit="return false;" 改造后,form2不再自动提交了! ­

(6)下边看看input type="submit"对提交表单的影响­

这里不拿仅有一个文本框的form进行测试了(如果不用onSubmit="return false;" ,它是自动提交的) ­

<form name='form1' action="http://www.baidu.com"> ­

     <input type="text" name= "UserName1"/> ­

     <input type="text" name= "Password1"/> ­

     <input type="submit" value="提交1"/> ­

</form> ­

<form name='form2' action="http://www.google.com"> ­

     <input type="text" name= "UserName2"/> ­

     <input type="text" name= "Password2"/> ­

     <input type="submit" value="提交2"/> ­

</form> ­

则,分别鼠标点击form1、form2中的文本框并按回车后,会根据各自的action来进入不同的页面 ­

 

(7)下边看看input type="button"对提交表单的影响 ­

<form name='form1' action="http://www.baidu.com"> ­

     <input type="text" name= "Username1"/> ­

     <input type="text" name= "Password1"/> ­

     <input type="button" value="提交1"/> ­

</form> ­

<form name='form2' action="http://www.google.com"> ­

     <input type="text" name= "UserName2"/> ­

     <input type="text" name= "PassWord2"/> ­

     <input type="button" value="提交2"/> ­

</form>­

­

哈哈,分别鼠标点击form1、form2中的文本框并按回车后,都没有反应!看来button这样是不能提交表单的 ­

 

(8)使用 "button" 来提交表单­

­

<form name="form1" action="http://www.baidu.com"> ­

     <input type="text" name= "userName1"/> ­

     <input type="text" name= "password1"/> ­

     <input type="button" value="提交1" onclick="exec('http://www.google.com')"/> ­

</form>­

­

userName 、passWord处都填写数据,点击button。 ­

OK!连上google了,IE地址栏显示:http://www.google.com/?userName=1passWord=1 ­

 

(9)使用 "button" 来提交表单——参考js exec1()中的相关注释   ­

<form name='form' action="http://www.google.com"> ­

     <input type="text" name= "userName1"/> ­

     <input type="text" name= "passWord1"/> ­

     <input type="button" value="提交1" onclick="exec1('http://www.google.com')"/> ­

</form> ­

<form name='form1' action="http://www.hao123.com"> ­

     <input type="text" name= "userName"/> ­

</form>­

</body> ­

</html>­

关于onsubmit="return false;"。­

­onSubmit的使用 ­

在web开发中,我们经常会遇到,一点回车键表单就自己提交的问题,能不能"禁用"回车键呢,答案是肯定的.­

Html代码 ­

<from action="" method="post" onSubmit="return false">   ­

...............     ­

</from>   ­

­如果想在表单提交时,进行验证­

Html代码 ­

<html>   ­

<head>   ­

<script lanuage="javascript">   ­

function check()     ­

{     ­

//验证不通过时     ­

return false;     ­

}     ­

</script>   ­

</head>   ­

<body>   ­

<from action="" method="post" onSubmit="return check()">   ­

...............     ­

</from>   ­

</body>   ­

</html>   ­

­

<html> ­

<head> ­

<script lanuage="javascript"> ­

function check() ­

{ ­

//验证不通过时 ­

return false; ­

} ­

</script> ­

</head> ­

<body> ­

<from action="" method="post" onSubmit="return check()"> ­

............... ­

</from> ­

</body> ­

</html>­

­­这样就会对表单进行验证再进行提交­

要注意的是,千万不能写成­

­Html代码 ­

<from action="" method="post" onSubmit="check()">   ­

...............     ­

</from>   ­

­因为check()不通过后会返回false, 因为onsubmit属性就像是<form>这个html对象的一个方法名,其值(一字符串)就是其方法体,默认返回true,所以还是相当于验证通过 ­

记得对表单验证一定要写成这样­

­Html代码 ­

<from action="" method="post" onSubmit="return check()">   ­

...............     ­

</from>   ­

 

 

来自: http://hi.baidu.com/oysterliu/blog/item/eafe202b77a4b1325243c1d6.html
<think>我们正在处理用户关于HTML表单action属性和onsubmit事件的使用方法和示例的请求。根据提供的引用,我们有一些关于表单的示例,但需要结合用户的具体需求进行回答。用户要求:查找关于HTML表单action属性和onsubmit事件的使用方法或示例。引用[1]展示了一个简单的HTML表单,其中包含了action属性(指向"form_action.asp")和method属性(get)。该表单有两个输入字段和一个提交按钮。引用[2]展示了一个Vue.js环境下使用ElementUI的表单,但这不是纯HTML,而是基于组件的。引用[3]展示了一个React表单组件,其中提交时触发的onSubmit事件处理函数可以获取表单的值。因此,我们可以结合引用[1]和引用[3]来回答用户的问题,因为引用[1]是纯HTML表单,而引用[3]展示了onsubmit事件的处理(尽管是在React中,但原理类似)。我们需要向用户解释:1.action属性:指定表单提交的URL。2. onsubmit事件:在表单提交时触发,可以用于在提交前进行验证或处理,如果返回false,则可以阻止表单提交。同时,我们可以提供一个纯HTML的示例,展示如何使用onsubmit事件处理函数。注意:用户要求的是纯HTML的示例,所以我们应尽量提供原生HTML/JavaScript的示例。结构:1.解释action属性。2.解释onsubmit事件。3.提供一个示例,展示同时使用actiononsubmit。4.说明注意事项。同时,根据系统级指令,我们需要在回答中自然地添加引用标识(引用[1]、引用[3]等),并在最后生成相关问题。由于用户的问题集中在HTML表单actiononsubmit,我们主要参考引用[1]和引用[3](尽管引用[3]是React,但我们可以将其概念转化为原生JavaScript)。</think>### HTML 表单 action 属性和 onsubmit 事件详解 #### 1. `action` 属性 定义表单数据提交的目标 URL,当用户点击提交按钮时,浏览器会将表单数据发送到该地址。语法: ```html <form action="目标URL" method="请求方法"> <!-- 表单内容 --> </form> ``` - **请求方法**:常用 `GET`(数据附加在 URL 后)或 `POST`(数据在请求体中) - **示例**(引用[1]): ```html <form action="form_action.asp" method="get"> First name: <input type="text" name="fname"><br> Last name: <input type="text" name="lname"><br> <input type="submit" value="Submit"> </form> ``` 提交后数据将发送到 `form_action.asp?fname=值&lname=值` #### 2. `onsubmit` 事件 在表单提交前触发,用于数据验证或自定义处理。通过返回 `false` 可阻止表单提交: ```html <form onsubmit="return 处理函数()"> ``` - **验证示例**: ```html <form action="/submit" onsubmit="return validateForm()"> <input type="email" name="email" required> <input type="submit"> </form> <script> function validateForm() { const email = document.forms[0].email.value; if (!email.includes("@")) { alert("邮箱格式错误"); return false; // 阻止提交 } return true; // 允许提交 } </script> ``` #### 3. 综合使用示例 ```html <form action="https://api.example.com/submit" method="POST" onsubmit="return handleSubmit(event)" > <input type="text" name="username" placeholder="用户名"> <input type="password" name="pwd" placeholder="密码"> <button type="submit">登录</button> </form> <script> function handleSubmit(e) { // 阻止默认提交行为 e.preventDefault(); // 自定义处理(如 AJAX 提交) const formData = new FormData(e.target); fetch(e.target.action, { method: 'POST', body: formData }).then(response => { console.log("提交成功", response); }); return false; // 阻止传统表单提交 } </script> ``` #### 4. 注意事项 1. **优先级**:当 `onsubmit` 返回 `false` 时,`action` 指定的提交不会执行 2. **现代框架集成**:如 Vue/React 通常通过组件事件处理(引用[2][3]): ```jsx // React 示例(引用[3]) <form onSubmit={handleSubmit}> <input name="phone" /> <button type="submit">提交</button> </form> ``` 3. **安全提示**:始终在服务端进行数据验证,前端验证可被绕过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值