jQuery Form插件详解

<script src="js/jquery.form.js" type="text/javascript"></script>

Jquery Form Plugin是jquery最重要的插件之一,它利用AJAX技术在不引起页面刷新的情况下POST表单。主要有两个方法:ajaxform和 ajaxsubmit。它会自动收集表单元素内容,决定如何管理提交进程。这两个方法支持多重选择。我想AJAX方式的表单应用再没有比这个插件更简单易用的了。

先在页面里设置一个普通的表单:
Html代码 复制代码

1. <form id=”myForm” action=”comment.php” method=”post”>   
   2.      姓名: <input type=”text” name=”name” id=”name”/>   
   3.      评论: <textarea name=”comment” id=”comment”></textarea>   
   4.      <input type=”submit” value=”提交评论” />   
   5. </form>   
   6. [/html]

<form id=”myForm” action=”comment.php” method=”post”> 
    姓名: <input type=”text” name=”name” id=”name”/> 
    评论: <textarea name=”comment” id=”comment”></textarea> 
    <input type=”submit” value=”提交评论” /> 
</form> 
[/html]

加载jquery库和插件脚本库。然后简单地写一段初始化脚本,这段脚本将在DOM加载完成时执行:
Html代码 复制代码

1. <head>   
   2.      <script type=”text/javascript” src=”jquery.js”></script>   //加载jquery   
   3.      <script type=”text/javascript” src=”form.js”></script>     //加载插件   
   4.      <script type=”text/javascript”>   
   5.          // DOM加载完毕后执行   
   6.          $(document).ready(function() {   
   7.              // 绑定’myForm’并定义一个简单的回调函数   
   8.              $(‘#myForm‘).ajaxForm(function() {   
   9.                  alert(”评论提交完成!”);   
  10.              });   
  11.          });   
  12.      </script>   
  13. </head>   
  14. [/html]

<head> 
    <script type=”text/javascript” src=”jquery.js”></script>  //加载jquery 
    <script type=”text/javascript” src=”form.js”></script>    //加载插件 
    <script type=”text/javascript”> 
        // DOM加载完毕后执行 
        $(document).ready(function() { 
            // 绑定’myForm’并定义一个简单的回调函数 
            $(‘#myForm‘).ajaxForm(function() { 
                alert(”评论提交完成!”); 
            }); 
        }); 
    </script> 
</head> 
[/html]

OK,就是这么简单。当点击“提交评论”按钮后,表单的数据就会POST到comment.php脚本,并且返回“评论提交完成”信息(如果提交成功)。页面并没有刷新,非常AJAX……

让我们来看看这个插件还有什么强大的功能。

ajaxForm

1. 该方法须预先绑定表单,所以它一般在$(document).ready(function() { …}里定义。它能让表单在不刷新页面的情况下POST到目标。可以为该方法提供一个参数,参数一般是一个回调函数用于返回信息给用户。当然如果不提供参数也行,只是表单提在无声无息地提交后无法得到确认了。

2. 增加所有需要的事件监听器,为AJAX提交表单做好准备。ajaxForm不能提交表单。在document的ready函数中,使用ajaxForm来为 AJAX提交表单进行准备。ajaxForm接受0个或1个参数。这个单个的参数既可以是一个回调函数,也可以是一个Options对象。
可链接(Chainable):可以。

实例:
Js代码 复制代码

1. $(‘#myFormId‘).ajaxForm();

$(‘#myFormId‘).ajaxForm();

ajaxSubmit

1. 该方法是以响应事件来通用AJAX方式提交表单。比如点击某个按钮或改变了某个下拉框的值,在触发事件函数里可以设置该方法。如:
Js代码 复制代码

1. $(”#clickme”).click(function(){   
   2.    $(”#myForm”).ajaxSubmit();   
   3. });

$(”#clickme”).click(function(){
  $(”#myForm”).ajaxSubmit();
});

或者这样:
Html代码 复制代码

1. <select id=”mySelect” onchange=”$(‘#myForm’).ajaxSubmit();”>

<select id=”mySelect” onchange=”$(‘#myForm’).ajaxSubmit();”>

2. 马上由AJAX来提交表单。大多数情况下,都是调用ajaxSubmit来对用户提交表单进行响应。ajaxSubmit接受0个或1个参数。这个单个的参数既可以是一个回调函数,也可以是一个Options对象。
可链接(Chainable):可以。

实例:
Js代码 复制代码

1. // 绑定表单提交事件处理器   
   2. $(‘#myFormId‘).submit(function() {   
   3.     // 提交表单   
   4.      $(this).ajaxSubmit();   
   5.     // 为了防止普通浏览器进行表单提交和产生页面导航(防止页面刷新?)返回false   
   6.     return false;   
   7.     });

// 绑定表单提交事件处理器
$(‘#myFormId‘).submit(function() {
    // 提交表单
    $(this).ajaxSubmit();
    // 为了防止普通浏览器进行表单提交和产生页面导航(防止页面刷新?)返回false
    return false;
   });

formSerialize

1. 该方法可以表单域的名称和值连接起来,形成一个字符串,字符串格式为name1=value1&name2=value2…比如:
Js代码 复制代码

1. var queryString=$(”#myForm”).formSerialize();

var queryString=$(”#myForm”).formSerialize();

变量queryString的值将为变成name=xxx&comment=xxx。得到这个字符串后,可以用$.post来提交,

如:
Js代码 复制代码

1. $.post(”comment.php”,queryString);

$.post(”comment.php”,queryString);

2.将表单串行化(或序列化)成一个查询字符串。这个方法将返回以下格式的字符串:name1=value1&name2=value2。
可链接(Chainable):不能, 这个方法返回一个字符串。

实例:
Js代码 复制代码

1. var queryString = $(‘#myFormId‘).formSerialize();   
   2.   
   3. // 现在可以使用$.get、$.post、$.ajax等来提交数据   
   4. $.post(‘myscript.php‘, queryString);

var queryString = $(‘#myFormId‘).formSerialize();

// 现在可以使用$.get、$.post、$.ajax等来提交数据
$.post(‘myscript.php‘, queryString);

fieldSerialize

1. 和formSerialize一样,返回一个字符串,但返回的是表单指定元素或特定元素类型域的字符串。返回字符串格式也是一样的。如:var queryString = $(’#myForm :text’).fieldSerialize();//返回myForm表单内所有文本框的字符串值。

2.将表单的字段元素串行化(或序列化)成一个查询字符串。当只有部分表单字段需要进行串行化(或序列化)时,这个就方便了。这个方法将返回以下格式的字符串:name1=value1&name2=value2。
可链接(Chainable):不能,这个方法返回一个字符串。

实例:
Js代码 复制代码

1. var queryString = $(‘#myFormId .specialFields‘).fieldSerialize();

var queryString = $(‘#myFormId .specialFields‘).fieldSerialize();

fieldValue

1.返回一个数组,记录表单元素的值。如果表单没有值则对应数组值为空。如:

Js代码 复制代码

1. var data=$(’:text’).fieldValue();//返回所有表单中所有文本框类型的值。

var data=$(’:text’).fieldValue();//返回所有表单中所有文本框类型的值。

变量data为[”,”,”]这样的一个数组,数组元素对应表单元素的值。事实上我们可以这样来得到“姓名”文本框里的值:var data=$(”#name”).val();(这个元素要有ID属性)这样的作法不需要jquery form插件也可以得到值。但使用插件可以更方便地取得单个或多个表单中特定元素域的值。比如取得所有文本框或所有复选框的值。只要加个“:”就可以。这种方法也可以用到formSerialize或fieldSerialize方法上。
Js代码 复制代码

1. var data=$(”#myForm :text”).fieldValue();//取得在myForm表单里所有文本框的值。

var data=$(”#myForm :text”).fieldValue();//取得在myForm表单里所有文本框的值。

2.返回匹配插入数组中的表单元素值。从0.91版起,该方法将总是以数组的形式返回数据。如果元素值被判定可能无效,则数组为空,否则它将包含一个或多于一个的元素值。
可链接(Chainable):不能,该方法返回数组。

实例:
Js代码 复制代码

1. // 取得密码输入值   
   2. var value = $(‘#myFormId :password‘).fieldValue();   
   3. alert(‘The password is: ‘ + value[0]);

// 取得密码输入值
var value = $(‘#myFormId :password‘).fieldValue(); 
alert(‘The password is: ‘ + value[0]);

formToArray

同样也返回一个数组,这个数组是对象数组。对象有name和value两个属性,分别记录表单中的元素名称和元素值。如:
Js代码 复制代码

1. var data=$(”#myForm”).formToArray();

var data=$(”#myForm”).formToArray();

变量data得到的是一个对象数组。data[0].name保存myForm表单中第一个表单元素的名称属性值,这里是”name”。data[0].value保存myForm表单中第一个表单元素的值,这里就是填了什么值就是什么。
resetForm

1.该方法很简单啦,恢复表单初始状态。也就恢复到DOM加载完成时的表单状态。类似“重设表单”

2.清除表单元素。该方法将所有的文本(text)输入字段、密码(password)输入字段和文本区域(textarea)字段置空,清除任何select元素中的选定,以及将所有的单选(radio)按钮和多选(checkbox)按钮重置为非选定状态。
可链接(Chainable):可以。
Js代码 复制代码

1. $(‘#myFormId‘).clearForm();

$(‘#myFormId‘).clearForm();

clearFields

1.清除表单域元素。可以清除特定类型的域元素,比如清除所有文本框的,或所有复选框的域。

2.清除字段元素。只有部分表单元素需要清除时才方便使用。
可链接(Chainable):可以。
Js代码 复制代码

1. $(‘#myFormId .specialFields‘).clearFields();

$(‘#myFormId .specialFields‘).clearFields();

Options对象

ajaxForm和ajaxSubmit都支持众多的选项参数,这些选项参数可以使用一个Options对象来提供。Options只是一个JavaScript对象,它包含了如下一些属性与值的集合:

target

指明页面中由服务器响应进行更新的元素。元素的值可能被指定为一个jQuery选择器字符串,一个jQuery对象,或者一个DOM元素。
默认值:null。

url

指定提交表单数据的URL。
默认值:表单的action属性值

type

指定提交表单数据的方法(method):“GET”或“POST”。
默认值:表单的method属性值(如果没有找到默认为“GET”)。

beforeSubmit

表 单提交前被调用的回调函数。“beforeSubmit”回调函数作为一个钩子(hook),被提供来运行预提交逻辑或者校验表单数据。如果 “beforeSubmit”回调函数返回false,那么表单将不被提交。“beforeSubmit”回调函数带三个调用参数:数组形式的表单数据, jQuery表单对象,以及传入ajaxForm/ajaxSubmit中的Options对象。表单数组接受以下方式的数据:

[ { name: ‘username‘, value: ‘jresig‘ }, { name: ‘password‘, value: ‘secret‘ } ]

默认值:null

success

表单成功提交后调用的回调函数。如果提供“success”回调函数,当从服务器返回响应后它被调用。然后由dataType选项值决定传回responseText还是responseXML的值。
默认值:null

dataType

期望返回的数据类型。null、“xml”、“script”或者“json”其中之一。dataType提供一种方法,它规定了怎样处理服务器的响应。这个被直接地反映到jQuery.httpData方法中去。下面的值被支持:

‘xml‘:如果dataType == ‘xml‘,将把服务器响应作为XML来对待。同时,如果“success”回调方法被指定, 将传回responseXML值。

‘json‘:如果dataType == ‘json‘, 服务器响应将被求值,并传递到“success”回调方法,如果它被指定的话。

‘script‘:如果dataType == ‘script‘, 服务器响应将求值成纯文本。

默认值:null(服务器返回responseText值)

semantic

Boolean flag indicating whether data must be submitted in strict semantic order (slower). Note that the normal form serialization is done in semantic order with the exception of input elements of type="image". You should only set the semantic option to true if your server has strict semantic requirements and your form contains an input element of type="image".
布 尔标志,表示数据是否必须严格按照语义顺序(slower?)来进行提交。注意:一般来说,表单已经按照语义顺序来进行了串行化(或序列化),除了 type="image"的input元素。如果你的服务器有严格的语义要求,以及表单中包含有一个type="image"的input元素,就应该将 semantic设置为true。(译注:这一段由于无法理解,翻译出来可能语不达意,但请达人指正。)
默认值:false

resetForm

布尔标志,表示如果表单提交成功是否进行重置。
Default value: null

clearForm

布尔标志,表示如果表单提交成功是否清除表单数据。
默认值:null

实例:
Js代码 复制代码

1. // 准备好Options对象   
   2. var options = {   
   3.      target:     ‘#divToUpdate‘,   
   4.      url:        ‘comment.php‘,   
   5.      success: function() {   
   6.        alert(‘Thanks for your comment!‘);   
   7.      } };   
   8.   
   9.    // 将options传给ajaxForm   
  10. $(‘#myForm‘).ajaxForm(options);

// 准备好Options对象
var options = {
    target:     ‘#divToUpdate‘,
    url:        ‘comment.php‘,
    success: function() {
      alert(‘Thanks for your comment!‘);
    } };

// 将options传给ajaxForm
$(‘#myForm‘).ajaxForm(options);

注意:Options对象还可以用来将值传递给jQuery的$.ajax方法。如果你熟悉$.ajax所支持的options,你可以利用它们来将Options对象传递给ajaxForm和ajaxSubmit。

时间: 2024-08-28 00:13:51

jQuery Form插件详解的相关文章

用jQuery开发插件详解

jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,即给jQuery对象添加方法.下面就两种函数的开发做详细的说明. 1.类级别的插件开发 类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法.典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中.关于类级别的插件开发可以采用如下几种

JQuery PowerTimer 插件详解

一个jQuery插件,提供定时器以下类型: 1.单运行定时器(又名的setTimeout) 2.反复运行定时器(又名的setInterval) 3.立即运行一个重复的运行计时器,然后等待的时间间隔. 4.反复运行,一定的间隔定时器(见下文睡眠选项). 5.反复运行,一定的间隔计时器,将立即运行,然后等待睡眠时间. 为什么你会使用这个库与常规的setTimeout? 因为它提供了大量的 附加功能! 例如: - 自动定时器ID跟踪. - 暂停和继续后定时器. - 独特的计时器,如果你启动一个定时器两

jQuery lazyload插件详解

lazyload插件用于图片延迟加载,节省服务器带宽,减少服务器请求次数,提高网站的页面加载速度,用于网站性能优化,只有当图片在窗口可视范围内时才向服务器请求: 参数: threshold:设置距离窗口底部多少像素开始加载图片,提前加载图片, failure_limit:lazyload按照瀑布流加载图片,当找到(按照图片在DOM中的位置从上往下)第一张不在可视范围的图片后就停止检测延迟加载图片的位置 如上图,如果每个列表块包含两张图片,failure_limit为0时,当页面滚动到阴影位置时,

jQuery 事件用法详解

jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jquery中文文档 简介 jquery 之所以成为最受欢迎的前端库,很大一部分是得益于它的事件具有良好的语义,优秀的兼容性,并且便于管理和扩展. 在这里我会介绍 jquery 事件的一些比较基础的用法. 实现原理 jquery 事件脱胎于浏览器的 addEventListener (W3) 和 attac

使用jQuery.form插件,实现完美的表单异步提交

示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 抓住6月份的尾巴,今天的主题是 今天我想介绍的是一款jQuery的插件:Jquery.form.js 官网. 通过该插件,我们可以非常简单的实现表单的异步提交,并实现文件上传.进度条显示等等. 现在我们从一个ASP.NET同步表单提交开始,然后再将其转化为异步的表单提交.我写了3种表单提交示例,并简单分析了各种方式的利弊. 当然主题还是使用jQuery表单插件轻松实现表单异步提交以及分析下该插件的源码. ASP.NET服务

jQuery datepicker参数 详解

DatePicker支持鼠标点选日期,同时还可以通过键盘控制选择: page up/down - 上一月.下一月 ctrl+page up/down - 上一年.下一年 ctrl+home - 当前月或最后一次打开的日期 ctrl+left/right - 上一天.下一天 ctrl+up/down - 上一周.下一周 enter - 确定选择日期 ctrl+end - 关闭并清除已选择的日期 escape - 关闭并取消选择 实用功能: $.datepicker.setDefaults( set

Bootstrap transition.js 插件详解

Bootstrap transition.js 插件详解 时间 2015-01-27 12:12:00 博客园-原创精华区 原文  http://www.cnblogs.com/xyzhanjiang/p/4252513.html 主题 Bootstrap JavaScript Bootstrap 自带的 JavaScript 插件的动画效果几乎都是使用 CSS 过渡实现的,而其中的 transition.js 就是为了判断当前使用的浏览器是否支持 CSS 过渡.下面先来简单了解下 CSS 过渡

jQuery form插件的使用--ajaxForm()和ajaxSubmit()的可选参数项对象

一.前提说明 Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 二.简单介绍 本文演示的是:jQuery form插件的使用--ajaxForm()和ajaxSubmit()的可选参数项对象 $('#myForm').ajaxForm(function() { $('#output1').html("提交成功!欢迎下次再来!").show(); }); $('#myForm2').sub

jquery的css详解(二)

jq的工具方法style用于设置样式,jq的实例方法css在设置样式时就是调用的它,接下来分析一下源码. jQuery.extend({ ............................ style: function( elem, name, value, extra ) { // Don't set styles on text and comment nodes if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ||