jquery表单插件form使用方法详解


Posted in Javascript onJanuary 20, 2017

传统的表单提交,都是页面跳转的形式,但是现在更流行ajax提交,那么如果希望有表单提交的简便,也有ajax的效果,有什么解决办法吗?

怎么使用

两种使用方式:

第一种方式

<!DOCTYPE html>
 <html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="js/jquery-1.9.1.min.js"></script>
  <script src="js/jquery-form.js"></script>
  <script>
   // 使用ajaxForm
   $(function(){
    $("#myForm").ajaxForm(function(){
     $("#output1").html("提交成功").show();
    })
   })
  </script>
 </head>
 <body>
  <form id="myForm">
   <input type="text" name="username">
   <input type="text" name="password">
   <input type="submit" value="提交">
   <div id="output1" style="display: none"></div>
  </form>
 </body>
 </html>

第二种方式

<!DOCTYPE html>
 <html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="js/jquery-1.9.1.min.js"></script>
  <script src="js/jquery-form.js"></script>
  <script>
   $(function(){
    //方式二 与方式一效果一样
    $("#myForm").submit(function(){
     // 使用ajaxSubmit
     $(this).ajaxSubmit(function(){
      $("#output1").html("提交成功").show();
     });
     return false;
    })
   })
  </script>
 </head>
 <body>
  <form id="myForm">
   <input type="text" name="username">
   <input type="text" name="password">
   <input type="submit" value="提交">
   <div id="output1" style="display: none"></div>
  </form>
 </body>
 </html>

感觉上第一种要 更方便一点。
其中的参数function()是提交成功后的回调函数。

利用这种提交方式,可以实现异步表单提交,很方便。但是,还是有点不满足,比如说,我可能想在提交表单之前验证一下,虽然可以手动地在提交表单动作之外完成,但是很麻烦。form插件有没有继承这样的功能呢?

二、options参数

上面只讲了form中的一个function回调函数参数,其实它还有一个参数,就是options。有什么用呢?

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <script src="js/jquery-1.9.1.min.js"></script>
 <script src="js/jquery-form.js"></script>
 <script>

  var options = {
   target:'#output1',   // 把服务器返回的内容放入id为output1的元素中
   beforeSubmit: fun1,   // 提交前的回调函数
   success:  fun2,   // 提交后的回调函数
   dataType:     // 接收服务端返回的类型 xml,scrpit,json
  };

  // beforeSubmit前可以作验证
  function fun1(formData,jqForm,options){
   // formData 提交值的数组对象
   // jqForm 表单元素的jQuery对象,jqForm[0]是其dom对象
   // 该函数如果返回false,则阻止表单提交

   // formData可以判断全部不为空的情况
   for(var i=0;i<formData.length;i++){
    if(!formData[i].value){
     alert("都不能为空");
     return false;
    }
   }

   // jqForm可以判断某个不为空的情况
   var form = jqForm[0];
   if(!form.name.value){
    alert("name不能为空");
    return false;
   }

   // fieldValue()可以获取多值的数组形式,如checkbox
   var value = $('input[name=name]').fieldValue();
   if(!value[0]){
    return false;
   }
  }
  function fun2(responseText, statusText){
   // 根据dataType不同responseText解析方式不同,
   // 默认  responseText
   // xml  responseXml以xml解析
   // json  responseJson
  }

  $(function(){
   //方式二 与方式一效果一样
   $("#myForm").ajaxForm(options); // 要想使options生效,需要作为参数传递
  })
 </script>
</head>
<body>
 <form id="myForm">
  <input type="text" name="username">
  <input type="text" name="password">
  <input type="submit" value="提交">
  <div id="output1" style="display: none"></div>
 </form>
</body>
</html>

可以看出,在beforeSubmit的回调函数fun1中,我们有三种方式获取表单数据 formData,jqForm,fieldValue 满足了各种获取值的方式,想怎么验证怎么验证。只要返回false就能阻止表单提交sucess回调的fun2也有状态值和服务端的返回数据,想怎么处理怎么处理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js模拟弹出效果代码修正版
Aug 07 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
Dec 21 Javascript
For循环中分号隔开的3部分的执行顺序探讨
May 27 Javascript
js随机生成网页背景颜色的方法
Feb 26 Javascript
跟我学习javascript的for循环和for...in循环
Nov 18 Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
Jan 04 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
Nov 28 Javascript
vue2.0 axios跨域并渲染的问题解决方法
Mar 08 Javascript
Node.js进阶之核心模块https入门
May 23 Javascript
vue更改数组中的值实例代码详解
Feb 07 Javascript
浅谈JavaScript 声明提升
Sep 14 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 #Javascript
详解JavaScript中this的指向问题
Jan 20 #Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 #Javascript
浅谈JavaScript异步编程
Jan 20 #Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
Jan 20 #Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
Jan 19 #Javascript
BootStrap组件之进度条的基本用法
Jan 19 #Javascript
You might like
php生成excel列序号代码实例
2013/12/24 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
详谈javascript精度问题与调整
2017/07/08 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python 中pandas.read_excel详细介绍
2017/06/23 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
毕业典礼主持词大全
2014/03/26 职场文书
同学聚会策划方案
2014/06/06 职场文书
华清池导游词
2015/02/02 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
刑事附带民事代理词
2015/05/25 职场文书
结婚典礼致辞
2015/07/28 职场文书
小学远程教育工作总结
2015/08/13 职场文书
Pandas数据类型之category的用法
2021/06/28 Python
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python