jQuery Form插件实现无刷新表单提交详解

作者:资源驿站时间:2026-10-29 13:57:25浏览:597

本文介绍如何使用jQuery Form插件实现表单的AJAX无刷新提交。通过ajaxForm和ajaxSubmit等核心方法,支持提交前验证、回调处理及多种数据格式。详细解析formSerialize、fieldSerialize等辅助函数的用法,帮助开发者提升用户体验并简化前端交互逻辑。

jQuery Form插件简介与优势

传统表单提交会导致页面刷新,体验较差。采用AJAX模式提交表单,可以明确告知用户当前状态,如正在提交、提交成功或失败。

jQuery Form插件具备以下优势:

1. 支持提交前的数据验证。

2. 支持提交后的回调处理。

3. 采用AJAX方式,显著提升用户体验。

4. 提交方式灵活,只需指定Form ID即可提交指定表单,且参数可配置。

5. 支持多种数据类型,包括XML、JSON等。

核心函数详解

该插件主要包含以下函数:

1. ajaxForm

用于添加所有必要的事件监听器,为AJAX提交做准备。注意ajaxForm本身不直接提交表单。应在document.ready中调用ajaxForm进行初始化。该函数接受0个或1个参数,参数可以是回调函数或Options对象。

示例代码见。


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

2. ajaxSubmit

立即通过AJAX提交表单。大多数情况下,调用ajaxSubmit来响应用户的提交操作。该函数接受0个或1个参数,参数可以是回调函数或Options对象。

示例代码见。


// 绑定表单提交事件处理器
$('#myFormId').submit(function() {
// 提交表单
$(this).ajaxSubmit();
// 为了防止普通浏览器进行表单提交和产生页面导航(<span style="color: #333333;"><a href="http://www.100sucai.com/web/jquerytexiao/huandengpian" target="_blank"><span style="color: #333333;">防止页面刷新</span></a></span>?)返回false
return false;
});

3. formSerialize

将表单序列化为查询字符串。返回格式为name1=value1&name2=value2的字符串。

示例代码见。


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

4. fieldSerialize

将表单的部分字段元素序列化为查询字符串,适用于只需提交部分字段的情况。返回格式为name1=value1&name2=value2的字符串。

示例代码见。


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

5. fieldValue

返回匹配插入数组中的表单元素值。自0.91版起,该方法始终以数组形式返回数据。若元素值被判定为无效,则返回空数组;否则包含一个或多个元素值。

示例代码见。


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

6. resetForm

通过调用表单元素原有的DOM方法,将表单恢复到初始状态。


$('#myFormId').resetForm();

示例代码见。

清空表单控件的值。此操作会将所有文本(text)、密码(password)及文本域(textarea)输入框的内容清除,取消所有选择框(select)的选中项,并将单选按钮(radio)与复选框(checkbox)恢复至未选中状态。

清空表单元素。该方法会将所有文本(text)、密码(password)输入字段和文本区域(textarea)置空,清除select元素的选定状态,并将单选(radio)和多选(checkbox)按钮重置为非选中状态。


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

示例代码见。

8. clearFields

用于清除部分表单字段,仅在需要清除特定字段时使用。


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

完整示例代码

示例代码见。


<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>My Jquery</title>
  <script type="text/javascript" src="<%=request.getContextPath()%>/jslib/jquery-1.4.2.js"></script>
  <script type="text/javascript" src="<%=request.getContextPath()%>/jslib/jquery.form.js"></script>
  <script type="text/javascript"> 
  // wait for the DOM to be loaded
    $(document).ready(function() { 
     // bind 'myForm' and provide a simple callback function
      $('#myForm').ajaxForm(function() { 
        alert("Thank you for your comment!"); 
      }); 
    }); 
    // attach handler to form's submit event 
    $('#myFormId').submit(function() {   
     // submit the form   
     $(this).ajaxSubmit();   
     // return false to prevent normal browser submit and page navigation   
     return false; 
    });
  </script>
</head>
<body>
  <form id="myForm" action="index.jsp" method="post">
  Name: <input type="text" name="name" />
  Comment:<textarea name="comment"></textarea>
  <input type="submit" value="Submit Comment" />
  </form>
</body>
</html>

jQuery Form插件的完整示例代码见。

作者最新文章