jQuery表单增强:使用jquery.form.js

发表时间: 2024-03-31 10:05

表单插件(Form Plugin)

下载地址
:http://plugins.jquery.com/form/

文件名:jquery.form.js

version: 3.50.0-2014.02.05(最新版本)

功能:提供表单数据、重置表单项目、使用Ajax提交数据等

获取表单数据:

对于表单而言,最重要的功能莫过于获取用户填写的数据。在表单中可以通过fieldValue()直接获取表单的值;

该方法返回表单中所有"有用元素"的值组成的数组;

fieldValue()方法还可以接受一个布尔值作为参数,

false值将获取表单中所有的元素的值,而不仅仅是"有用元素"的值,还包括未选中元素(如radio:male和female都包括),

默认值true,仅包括有用元素;

var aFieldValue = $("#myForm *").fieldValue() //ID选择符后必须带*var aFieldValue = $("#myForm :radio").fieldValue()var aFieldValue = $(":radio").fieldValue()var aFieldValue = $("input").fieldValue()var aFieldValue = $(":input").fieldValue() //:input过滤选择器包括<input>、<select>、<textarea>、<button>var aFieldValue = $("#myForm :radio").fieldValue(false)

实例:

<script language="javascript" src="jquery.min.js"></script><script language="javascript" src="jquery.form.js"></script><script language="javascript">function checkFiledValue(){var aFieldValue = $("#myForm *").fieldValue(); //ID选择符后面必须要有*或过滤选择器,否则出错//获取整个表单有用元素的值alert(aFieldValue.join());}</script>

使用方法

<input type="button" name="btn" value="FieldValue" onclick="checkFiledValue()">

另外fieldValue()方法也可以通过过滤选择器获取指定元素的值,例如

var aFieldValue = $("#myForm :radio").fieldValue();

注意:#myForm与:radio要有空格,否则不能读取

格式化表单数据:

对于Ajax异步传输而言,往往需要将传送的数据进行固定的格式化处理;如果采用javascript语句则需要遍历所有元素并获取它们的值。

表单插件提供了两个非常实用的格式化函数formSerialize()和fieldSerialize(),分别用于整个表单数据的格式化和特定元素数据的格式。

formSerialize()使用方法:

var data = $("#myForm").formSerialize(); //只能是表单ID选择符

实例:

<script language="javascript" src="jquery.min.js"></script><script language="javascript" src="jquery.form.js"></script><script language="javascript">function checkFormSerialize(){var sQuery = $("#myForm").formSerialize();//将表单中的有用值格式化alert(sQuery); //显示格式: Radio=male&Radio=female//后面可以接Ajax语句//$.get(url,sQuery)}</script>

使用方法:

<input type="button" name="btn" value="FormSerialize" onclick="checkFormSerialize()">

同样,fieldSerialize()用于表单个别元素的格式化处理,语法与formSerialize()十分类似;

参数true和false与fieldValue()的参数含义一致;

fieldSerialize()使用方法:

var data = $("input").fieldSerialize();var data = $(":radio").fieldSerialize();var date = $("#myForm").fieldSerialize() ////ID选择符后面不能有*和类选择器,带*经过测试会出错var data = $("#myForm :checkbox").fieldSerialize(); //Id选择符后,必须是过滤选择器var data = $("#myForm :checkbox").fieldSerialize(false);var data = $(":input").fieldSerialize(); //:input过滤选择器包括<input>、<select>、<textarea>、<button>

清除和重置表单数据

在HTML代码中可以通过reset来重置表单中的数据,但是它没有清除所有数据的功能。重置和清除的区别在于重置是将表单中元素的值设置为默认值。

<script language="javascript" src="jquery.min.js"></script><script language="javascript" src="jquery.form.js"></script><script language="javascript">$(function(){$("input[type=button]:eq(0)").click(function(){$("#myForm").clearForm();});$("input[type=button]:eq(1)").click(function(){$("#myForm").resetForm();});});</script>

HTML代码:

<input type="button" name="Clear" value="Clear"><input type="button" name="Reset" value="Reset">

按Ajax方式提交表单

表单框架还提供了ajaxSumbit()按照Ajax的方式直接提交表单;ajaxSubmit(options),其中参数options与$.ajax(options)的参数相同

实例:

<script language="javascript" src="jquery.min.js"></script><script language="javascript" src="jquery.form.js"></script><script language="javascript">$(function(){$("input[type=button]:eq(0)").click(function(){var options = {target: "#myTargetDiv"};//ajax一步上传表单$("#myForm").ajaxSubmit(options); //等同于$("#myForm").ajaxSubmit({target: "#myTargetDiv"})});});</script>

HTML代码:

<form id="myForm" name="myForm" action="15-4.php"><table cellspacing="0" id="formTable"><tr><td>用户</td><td><input name="Name" type="text"></td></tr><tr><td>密码</td><td><input name="Password" type="password"></td></tr><tr><td colspan="2" align="center"><input type="button" name="ajaxSub" value="AjaxSubmit"><input type="submit" name="Sub" value="NormalSubmit"></td></tr></table></form><div id="myTargetDiv"></div>

php脚本

<?phpheader('Content-type: text/html;charset=utf-8');echo $_REQUEST['Name'].":".$_REQUEST['Password'];?>

除了ajaxSumbit(options)方法外,表单插件还提供了一个ajaxForm(options)方法,该方法通常在页面加载完成时执行,用来将表单统一Ajax化,

并且提交表单依然使用传统的Submit按钮,只不过进行的是Ajax提交;

<script language="javascript" src="jquery.min.js"></script><script language="javascript" src="jquery.form.js"></script><script language="javascript">$(function(){var options = {target: "#myTargetDiv"};//表单的ajax化$("#myForm").ajaxForm(options);});</script>

HTML代码:

<form id="myForm" name="myForm" action="15-4.php"><table cellspacing="0" id="formTable"><tr><td>用户</td><td><input name="Name" type="text"></td></tr><tr><td>密码</td><td><input name="Password" type="password"></td></tr><tr><td colspan="2" align="center"><input type="submit" name="Sub" value="NormalSubmit"></td></tr></table></form><div>fsss gs </div><div id="myTargetDiv"></div>

php脚本

<?phpheader('Content-type: text/html;charset=utf-8');echo $_REQUEST['Name'].":".$_REQUEST['Password'];?>

实例:模拟搜狐热门调查

HTNL代码:

<html><head><title>模拟搜狐热门调查</title><style type="text/css"><!--body{font-family:Arial, Helvetica, sans-serif;font-size:12px;}form{margin:0px; padding:0px;}div{border:1px solid #004585;float:left; margin:6px;background:url(bg2.jpg) repeat-x;}#myTargetDiv{padding:10px; margin:0px;border:none;background:none;}input.btn{font-family:Arial, Helvetica, sans-serif;font-size:12px;border:1px solid #00328f;}p{margin:0px; padding:3px;}p.title{color:#FFFFFF;font-weight:bold;text-align:center;background:url(bg1.jpg) repeat-x;padding:5px;}ul{margin:12px; padding:0px;list-style:none;}ul li{margin:0px; padding:1px;}--></style><script language="javascript" src="jquery.min.js"></script><script language="javascript" src="jquery.form.js"></script><script language="javascript">$(function(){var options = {//目标为调查内容本身所处的div块target: "#myTargetDiv"};$("input[type=button]").click(function(){$("#myForm").ajaxSubmit(options);});});</script></head><body><div><p class="title">新闻集锦</p><ul><li>中国队0:3负于乌兹别克斯坦队,亚洲杯小组未出现</li><li>中国队1:1逼平泰国队,无言以对</li><li>再次遭淘汰,冲出亚洲梦再度破灭</li><li>中国队7:0大胜中国香港,依然被淘汰</li><li>颜面扫地,踢假球都被淘汰?</li><li>国足的未来让人担忧...</li></ul></div><div><p class="title">热点调查</p><div id="myTargetDiv"><form id="myForm" name="myForm" action="15-6.php"><p>你认为中国足球的前景如何?</p><p><label><input type="radio" name="Football" value="1">一片光明</label><br><label><input type="radio" name="Football" value="2">困难重重</label><br><label><input type="radio" name="Football" value="3">前途未卜</label></p><p><input type="button" name="Sub" value="提交" class="btn"> <input type="button" name="Sub" value="查看" class="btn"></p></form></div></div></body></html>

php代码:

<?phpheader('Content-type: text/html;charset=utf-8');$back = "";$back .= "<p>你认为中国足球的前景如何?</p><p> </p>";$back .= "<p>一片光明: 5%</p><p>困难重重: 61%</p><p>前途未卜: 34%</p>";echo $back;?>