表单插件——jquery.form.js
表单插件(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脚本
<?php header('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脚本
<?php header('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代码:
<?php header('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; ?>
复制