form实现表单提交的各种方法(表单提交源码)

1、type=”submit”<formname=”form”method=”post”action=”#"><inputtype=”submit”name=”submit”value=”提交&quo

大家好,又见面了,我是你们的朋友全栈君。

表单提交方法

1、type=“submit”

<form name=”form” method="post" action="#">
	<input type="submit" name="submit" value="提交">
</form>

2、type=“image”

<form name=”form” method=”post” action=”# "> 
	<input type=”image” name=”submit” src=”btnSubmit.jpg”> 
</form>

3、使用链接来提交表单,javascript的DOM模型:

<form name=”form” method=”post” action=”#”> 
	<a href=”javascript:form.submit();”>提交</a> 
</form>

这种方法实际上是调用了一个javascript函数,使用javacript函数来提交表单,方法就非常多非常灵活了,比如可以把它加入到任意一个标签的onclick事件中:

<form name=”form” method=”post” action=”#”> 
	<div onclick=”javascript:form.submit();”> 
		<span>提交</span> 
	</div> 
</form>

但是,如果一个表单里有需要有多个提交按钮怎么办呢?
比如一个表单里的提交按钮所指向的处理页面不同,这样由于表单在定义的时候就已经确定下表单数据的处理页面,所以单纯地在表单里放多个提交按钮是没有办法达到目的的。这就需要javascript。
首先定义一个函数:

代码如下:

<script language=javascript> function query(){ 
     form.action=”query.php”; form.submit();} function update(){ 
     form.action=”update.php”; form.submit();} </script>

通过javascript改变form的action属性值,这样就可以实现多提交按钮而且功能不同了,页面内代码如下:

代码如下:

<form name=”form” method=”post” action=”#”> 
	<input type=”button” name=”query” onclick=”query();” value=”查询”> 
	<input type=”button” name=”update” onclick=”update();” value=”更新”> 
</form>

上面一段代码,使用的是普通的按钮,而提交功能的实现方法是在它的onclick事件中调用javascript函数.
有了上面这几种提交表单的方法,我想差不多够应付复杂的表单了.

表单提交注意点

注意:每个input标签都要有name属性,form要有action和method。
当然,这里也可以使用button代替input作为提交的按钮:
button的type属性有两个值:button和submit。当不写type属性时,其type的默认值是submit,点击的话也会直接提交数据

使用form的onsubmit()方法对表单数据进行 验证后 再提交

<form id="form1" action="/test" method="post" onsubmit="return checkForm()">

<input type="submit" value="提交">
//或者
<button type="submit">提交</button>

<script type="text/javascript"> function checkForm(){ 
     var user= document.getElementById('user').value; var psw= document.getElementById('psd').value; if (...) { 
     //如果验证不通过 return false; } else { 
     //验证通过 return true; } } </script>

这里给form元素加上了onsubmit()方法,它会在“提交”按钮点击的时候被触发,该方法一定要有return返回值,如果值为false则不进行提交,如果为true则提交。

给input type=’button’添加onclick事件,验证通过则调用submit()方法提交

<form id="form1" action="/test" method="post">

<input type="button" value="提交" onclick="checkForm();">
function checkForm(){ 
     
   var user= document.getElementById('user').value;
   var psw= document.getElementById('psd').value;  

   if(...){ 
     
       //验证不通过 
     return false;  
   }  
   document.getElementById("form1").submit();  
} 

使用ajax对数据进行 验证后 再提交

<form id="form1" action="/test" method="post">

<input type="submit" value="提交" onclick="login()">
//或者
<button type="button" onclick="login()">提交</button>

<script type="text/javascript"> function login() { 
     $.ajax({ 
     type: "POST", dataType: "json", url: "/users/login" , data: $('#form1').serialize(), //提交的数据 success: function (result) { 
     console.log(result); //打印服务端返回的数据(调试用) if (result.resultCode == 200) { 
     alert("提交成功"); } ; }, error : function() { 
     alert("提交失败"); } }); } </script>

注意:
如果使用button,要先进行数据验证的话,就必须要将type的值设置为”button”,即表示它是一个按钮

这里提交的数据’data’,使用了serialize()方法将提交的表单值序列化(即a=1&b=2格式),当然你也可以写成:

{ 
   
    "username":username,
    "password":password
}

表单的 input、select 默认的样式是不同的,所以就造成了width设置的一样,但就是对不齐,可以设置box-sizing:border-box;来解决不一致问题

补充

表单具有默认的提交行为,默认是同步的,同步表单提交,浏览器会锁死(转圈儿)等待服务端的响应结果。
表单的同步提交之后,无论服务端响应的是什么,都会直接把响应的结果覆盖掉当前页面。

后来有人想到了一种办法,来解决这个问题,那边是服务端重定向(服务端重定向针对异步请求无效)

消除自动填充:通过添加readonly&onfocus =“this.removeAttribute('readonly');
解决了这个问题。

<input type="password" name="Password" autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" >
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126078.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 用fiddler抓包小程序

    用fiddler抓包小程序第一步:安装fiddler,保证手机和PC端在同一个wifi下;第二步:设置属性按图勾选第三步:以上两步设置完后,重启下fiddler(解决本地服务器不能访问),然后查看本地IP地址第四步:手机设置HTTP代理我的服务器IP是192.168.1.5端口号设置的是8888,在手动选项框输入第五步:代理设置完成,用safari打开服务器,http://192.168.1.5:8888(如果打不开…

    2022年6月17日
    40
  • 运算放大器的基本原理

    运算放大器的基本原理运算放大器的基本原理来源:21ic作者:关键字:运算放大器  原理    运算放大器(OperationalAmplifier,简称OP、OPA、OPAMP)是一种直流耦合﹐差模(差动模式)输入、通常为单端输出(Differential-in,single-endedoutput)的高增益(gain)电压放大器,因为刚开始主要用于加法,乘法等运算电路中,因而得名。

    2022年5月3日
    33
  • 奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用

    奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用本打算实现一个点击按钮弹出一个landKindView然后点击屏幕其他部分时移除这个VIew,没想到的是,出了诸多不可思议的问题。在给这个控制器的View添加手势时,然后居然拦截不到,touchesbegin方法,然后又试了下添加tapGesture,依旧是没有反应。然后我试着在touchesBegin方法中 实现[supertouchesBegins….];依旧是没有任

    2022年7月25日
    10
  • Java安全之初探weblogic T3协议漏洞

    Java安全之初探weblogicT3协议漏洞文章首发自安全客:Java安全之初探weblogicT3协议漏洞0x00前言在反序列化漏洞里面就经典的还是莫过于weblogic的反序列化漏洞

    2021年12月12日
    49
  • 查询接口调用成功,但未查询到数据_dde怎么看

    查询接口调用成功,但未查询到数据_dde怎么看DTU轮询采集指令YeeCOMDTU提供了22组周期串口轮询,1组定时串口查询功能,根据配置规则自动输出串口指令,可实现自动采集外设数据并上报服务器,替代服务器的轮询,减小服务器开销。注1:第1组串口轮询最多可配置6条,单条最大长度28;第2组串口轮询最多可配置4条;单条最大长度28;1组固定时间,最多可以配置5条;单条最大长度20;如还不够或特殊需求可以由服务器下发指令或定制DTU版本。注2:轮询指令可灵活配置,常见

    2022年10月14日
    2
  • 秒杀多线程第四篇 一个经典的多线程同步问题

    秒杀多线程第四篇 一个经典的多线程同步问题

    2021年12月8日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号