JQuery ajax提交表单及表单验证
注:经过验证,formValidator只适合一个页面不超过一个表单的情况。
本例实现功能:通过ajax提交表单,并在提交表单前对表单的数据进行验证。
主要通过两个插件实现:
第一个:
jQuery Form Plugin
http://jquery.malsup.com/form 主要功能是ajax提交表单
第二个:jQuery formValidator 国产强大的表单验证插件。
http://www.cnblogs.com/wzmaodong
最简单的例子如下:
- <html>
- <head>
- <title>Form</title>
- <!-- 引入jQuery -->
- <script src="<?php echo base_url()?>style/jquery.js" type="text/javascript"></script>
- <!-- 引入jQuery formValidator -->
- <link type="text/css" rel="stylesheet" href="<?php echo base_url()?>style/form_valide/style/validator.css"></link>
- <script src="<?php echo base_url()?>style/form_valide/formValidator.js" type="text/javascript" charset="UTF-8"></script>
- <script src="<?php echo base_url()?>style/form_valide/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>
- <!-- 引入jQuery Form Plugin -->
- <script type="text/javascript" src="<?php echo base_url()?>style/ajax_form/jquery.form.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- //提供回调函数,提供提交返回结果的处理
- var options = {
- success:function(data) {
- alert(data);
- }};
- //初始化验证插件,如果提交出错,则弹出对话框,如果正确,则通过ajax提交表单请求。
- $.formValidator.initConfig({
- formid:"form1",
- onerror:function(msg){alert(msg)},
- onsuccess:function(){$('#form1').ajaxSubmit(options); return false;}
- });
- //表单验证
- $("#test1").formValidator({
- onshow:"请输入用户名,只有输入\"maodong\"才是对的",
- onfocus:"用户名至少6个字符,最多10个字符",
- oncorrect:"该用户名可以注册"})
- .inputValidator({min:6,max:10,onerror:"你输入的用户名非法,请确认"})
- .regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"});
- });
- </script>
- </head>
- <body>
- <form action="<?php echo site_url("welcome/post")?>" method="post" name="form1" id="form1">
- <td align="right">用户名:</td>
- <td><input type="text" name="test1"id="test1" style="width:120px" value="maodong" /></td>
- <td><div id="test1Tip" style="width:250px"></div></td>
- <input type="submit" name="button" id="button" value="提交" />
- </form>
- </body>
- </html>
success回调函数不执行,可能是请求时候
出错了。调用success方法之前尝试着把服务器返回的数据解析成dataType格式,试一下
error:function(XMLResponse){alert(XMLResponse.responseText)}。
如:
var options={
target:'#output1', //把服务器返回内容放入id为output1的元素中
beforeSubmit:showRequest, //提交前的回调函数
success:showResponse, //提交后的回调函数
error:function(XMLResponse){alert(XMLResponse.responseText)},
//url:url, //默认是form的action,如果申明,则会覆盖
//type:type, //默认是form的method('get' or 'post'),如果申明,则会覆盖
//dateType:null, //'xml','script',or 'json'(接受服务端返回的类型)
//clearForm:true, //成功提交后,清除所有表单元素的值
//resetForm:true, //成功提交后,重置所有表单的值
//timeout:3000 //限制请求的时间,当请求大于3秒后,跳出请求
}
ajaxForm 和 ajaxSubmit 的选项
除了以下列出的选项,你也可以给这两个函数传递标准$.ajax的选项。
target ———— 指定页面中的哪些元素用于响应服务器端的更新。这个值可以是jQuery查询字符串,或者它指定的jQuery对象,或者是DOM元素。默认值:null
replaceTarget ———— 配合target选项使用。当被设置为true时,target指定的部分将被替换,否则只替换它的内容。默认值:false
url ———— 指定数据要提交到的URL。默认值:表单的action属性值
type ———— 指定表单提交的方式:’GET’或者’POST’。默认值:表单的method属性值(若无则为’GET’)
data ———— 要同表单一起提交的额外数据,格式:data: { key1: ‘value1′, key2: ‘value2′ }
dataType
———— 服务器响应的数据类型,值可以为:null, ‘xml’, ‘script’,
或者’json’。这个选项指定服务器端的响应如何处理。它直接映射到了jQuery.httpData方法。如果dataType为’xml’,则服务
器的响应将被看成是XML,’success’回调函数将被传入responseXML的值。如果dataType为’json’,则服务器的响应将被看
成是JSON对象(通过eval),并传给’success’回调函数。如果dataType为’script’,则服务器的响应将被eval成全局上下
文。默认值:null
beforeSerialize ———— 表单序列化前的回调函数。它提供了一个机会以在值被获取前控制表单。其中的一个参数是表单的jQuery对象,另一个是传给ajaxForm/ajaxSubmit的选项对象。默认值:null
beforeSerialize: function($form, options) {
// 返回false将取消提交操作
}
beforeSubmit
————
表单提交前的回调函数。一般用于处理表单提交前的逻辑,如验证表单数据。如果这个回调函数返回false,提交操作将被取消。它的三个参数分别是表单数据
组成的数组,表单的jQuery对象,传给ajaxForm/ajaxSubmit的选项对象。默认值:null
beforeSubmit: function(arr, $form, options) {
// 第一个参数的格式:
// [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
// 返回false将取消提交操作
}
success ———— 表单被成功提交后,服务器端产生响应时的回调函数。它将被传入以下参数:
1. responseText 或者 responseXML 的值(取决于dataType选项的值)
2. statusText
3. xhr(XMLHttpRequest对象)(若jQuery的版本小于1.4,则为jQuery封装过的表单元素)
4. jQuery封装过的表单元素(若jQuery的版本小于1.4,则为undefined)
默认值:null
semantic
—————
指定提交的数据是否遵循语义上的顺序(较正常方式慢)。注意一般情况下表单的序列化都遵循语义上的顺序,除非有image类型的控件。只有当服务器对提交
的数据的语义上的顺序有严格要求而且表单含有image类型的控件时才设置为true。默认值:false
resetForm ———— 当成功提交时是否重置表单。默认值:null
clearForm ———— 当成功提交时是否清除表单。默认值:null
iframe ———— 是否总是将服务器的响应放在iframe里面。默认值:false
iframeSrc ———— 如果iframe选项为true,则要添加到iframe中的src属性。默认值:about:blank,使用https协议的页面的默认值为:javascript:false
forceSync ———— 指定是否在上传文件或者使用iframe选项提交表单时去除短时间的延迟。这个延迟用于浏览器在进行原始的提交操作前渲染DOM。通过它给用户提示如”请稍候”,这改善了可用性。默认值:false
选项示例:
// 准备选项对象
var options = {
target: '#divToUpdate',
url: 'comment.php',
success: function() {
alert('Thanks for your comment!');
}
};
// 把选项对象传递给ajaxForm函数
$('#myForm').ajaxForm(options);
JQuery ajax提交表单及表单验证的更多相关文章
- jquery ajax提交表单数据的两种方式
http://www.kwstu.com/ArticleView/kwstu_201331316441313 貌似AJAX越来越火了,作为一个WEB程序开发者要是不会这个感觉就要落伍,甚至有可能在求职 ...
- jquery ajax提交数据给后端
大家好,今天铁柱兄给大家带一段jquery ajax提交数据给后端的教学. 初学javaweb的同学前端提交数据基本上都是用form表单提交,这玩意儿反正我是觉得不太好玩.而JavaScript aj ...
- 继上篇-jquery ajax提交 本篇用ajax提交的数据去数据库查询
上篇讲到如何用jquery ajax提交数据至后台,后台接收并返回给ajax.https://www.cnblogs.com/tiezhuxiong/p/11943328.html 今天我们把数据传到 ...
- Jquery ajax提交表单几种方法
在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. ...
- Jquery ajax提交表单几种方法详解
[导读] 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的 ...
- Checkbox框全选操作,form表单提交与jquery ajax提交两种处理方式
//1.jquery ajax<script type="text/javascript"> $(function(){ var basePath = $(" ...
- jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)(转)
版权声明]:版权归作者所有,转载时请以超链接形式标明文章原始出处和作者信息及本声明:http://www.open-lib.com/Forum/Read_69_1.action 前言: 当jquery ...
- 通过jQuery Ajax提交表单数据时同时上传附件
1.使用场景:需要使用ajax提交表单,但是提交的表单里含有附件上传 2.代码实现方式: <!-- HTML代码 --> <form method="post" ...
- Jquery Ajax 提交json数据
在MVC控制器(这里是TestController)下有一个CreateOrder的Action方法 [HttpPost] public ActionResult CreateOrder(List&l ...
随机推荐
- JUC源码分析-集合篇(六)LinkedBlockingQueue
JUC源码分析-集合篇(六)LinkedBlockingQueue 1. 数据结构 LinkedBlockingQueue 和 ConcurrentLinkedQueue 一样都是由 head 节点和 ...
- JAVA API 实现hdfs文件操作
java api 实现hdfs 文件操作会出现错误提示: Permission denied: user=hp, access=WRITE, inode="/":hdfs:supe ...
- gulp+sass+react前端开发,环境搭建
由于前端技术的发展与市场需求的提高,前端开发已经不仅仅是写几个页面那么简单.如何有效的开发.管理一个越来越庞大.越来越复杂的前端项目,成为互联网团队必须要面对的难题. 各种js库.ui库曾经火极一时. ...
- Windows跳板机无法共享本地主机剪贴板
我的跳板机是Windows 2003 ,总是无法共享本地的剪贴板,我一般是在本地编辑SQL或者一些脚本,然后粘贴到跳板机中. 如果碰到无法共享本地剪贴板的情况,可以尝试按照以下步骤解决: 开始 -- ...
- 网络编程之 OSI七层协议
内容目录: 1.软件开发架构 2.OSI七层协议 3.每层协议介绍 1.软件开发架构 c/s架构: c:客户端 s:服务端 b/s架构: b:浏览器 s:服务器 本质:b/s其实也是c/s 2.OSI ...
- 使用tensorboard报错 ImportError: No module named past.builtins
安装 future pip install future conda install future
- 笔记39 Spring Web Flow——订单流程(收集顾客信息)
如果你曾经订购过披萨,你可能会知道流程.他们首先会询问你的电 话号码.电话号码除了能够让送货司机在找不到你家的时候打电话给 你,还可以作为你在这个披萨店的标识.如果你是回头客,他们可以 使用这个电话号 ...
- 日文NLP分词系统
mecab(http://mecab.sourceforge.net/)是奈良先端科技大学开发的日文分词系统,基于CRF的分词原理,有c++实现,提供python.perl.ruby等接口 日文NLP ...
- ps去除元素的三种常用方法
1.仿制图章工具,alt+鼠标左键进行选取复制区域,然后左键点击需要覆盖的区域. 2.套锁工具--选择区域--右键填充--内容识别. 3.修补工具,选中区域--拖动适配. 附带另一份较 ...
- 6361. 【NOIP2019模拟2019.9.18】鲳数
题目 题目大意 给你一个区间\([l,r]\),求这个区间内每个整数的十进制上从高位到低位的逆序对个数之和. 思考历程 一开始就知道这是个数位DP-- 结果一直都没有调出来,心态崩了-- 正解 先讲讲 ...