以前写前端验证脚本,用了一堆的JS,甚至有了自己的一套比较全面的JS文件,然而不时也会出现各个浏览器之间不兼容的情况,发现错误也比较困难,今年年初开始试着用JQuey之后,才发现Js可以写得如此方便和快捷,最近在验证方面,用了jquery.validate(http://bassistance.de/jquery-plugins/jquery-plugin-validation/),用起来更多方便,网上关于怎么用实例一大堆,下面贴一个Jquery动态操作表格和多行记录同时提交的Js的例子
代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>练习</title>
<link href="main.css" rel="stylesheet" type="text/css" />
<script src="lib/jquery.js" type="text/javascript"></script>
<script src="jquery.validate.js" type="text/javascript"></script>
<script src="localization/messages_cn.js" type="text/javascript"></script>
<script type="text/javascript">
var i = 0;
//初始化各表单控件ID
function initControlName()
{
var k=1;
$("input[name='id']").each(function () {
$(this).parents("tr").find("select").each(
function()
{
if($(this).attr("name")!="id")$(this).attr("name",$(this).attr("name").split('_')[0]+"_"+k);
}
);
$(this).parents("tr").find("input").each(
function()
{
if($(this).attr("name")!="id")$(this).attr("name",$(this).attr("name").split('_')[0]+"_"+k);
if($(this).attr("name").split('_')[0]=="mc")
{
//动态验证
$(this).rules("add", { required: true});
}
}
);
k++;
});
//写入多少行数
$("#itmes_sl").val(i);
}
$().ready(function() {
var run=false;
$("#listItemTable tr").eq(1).hide();
$("#form1").validate({
rules: {
xxx: "required",
}
});
//向上插入行
$("#btninsertAfter").click(function ()
{
var tr=$("#listItemTable tr").eq(1).clone();
var sourcetr=$("input[name='id']:checked").parents("tr");
tr.show();
tr.insertAfter(sourcetr);
initControlName();
});
//向下插入行
$("#btninsertBefore").click(function ()
{
var tr=$("#listItemTable tr").eq(1).clone();
var sourcetr=$("input[name='id']:checked").parents("tr");
tr.show();
tr.insertBefore(sourcetr);
initControlName();
});
$("#btnAdd").click(function () {
//复制一行
var tr=$("#listItemTable tr").eq(1).clone();//$(this).parents("tr");
tr.show();
tr.appendTo("#listItemTable");
i++;
if(run)initControlName();
});
//删除行
$("#btnDel").click(function () {
$("input[name='id']:checked").each(function () {
$(this).parents("tr").remove();
i--;
}
);
initControlName();
});
//初始化行
for(var n=0;n<5;n++)
{
$("#btnAdd").click();
}
$("#itmes_sl").val(5);
initControlName();
//初如化下拉列表
var l=0;
$("select[name^='jbytlx']").each(function () {
$(this).attr("selectedIndex",l);
l++;
});
run=true;
});
</script>
</head>
<body>
<div class="pageContent">
<form id="form1" name="form1" method="post" >
<input name="flag" type="hidden" value="save" />
<h1 align="center">分类汇总</h1>
<br />
<br/>
文本A:
<input name="xxx" type="text" class="text" id="xxx" size="50" />
<br />
文本B:
<input name="yyy" type="text" class="text" id="yyy" />
日期:
<input name="dcrq" type="text" class="text" id="dcrq" value="" />
<br />
<br />
<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#000000" id="listItemTable">
<tr>
<td width="100" align="center" bgcolor="#FFFFFF">序号 </td>
<td align="center" bgcolor="#FFFFFF">下拉框</td>
<td align="center" bgcolor="#FFFFFF">文本1</td>
<td align="center" bgcolor="#FFFFFF">文本2</td>
<td align="center" bgcolor="#FFFFFF">文本3</td>
<td align="center" bgcolor="#FFFFFF">文本4</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><label>
<input type="radio" name="id" id="id" />
</label></td>
<td bgcolor="#FFFFFF">
<select name="jbytlx_id" id="jbytlx_id">
<option>请选择...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> </td>
<td bgcolor="#FFFFFF"><input name="mc_0" type="text" class="noborder" size="8" id="mc_0" /></td>
<td bgcolor="#FFFFFF"><input name="t2_0" type="text" class="noborder" size="8" id="t2_0"/></td>
<td bgcolor="#FFFFFF"><input name="t3_0" type="text" class="noborder" size="8" id="t3_0"/></td>
<td bgcolor="#FFFFFF"><input name="t4_0" type="text" class="noborder" size="8" id="t4_0"/></td>
</tr>
</table>
<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#000000" id="listItemTable">
<tr>
<td width="100" align="center" nowrap="nowrap" bgcolor="#FFFFFF">
说明 </td>
<td height="150" colspan="10" bgcolor="#FFFFFF"><textarea name="sm" cols="45" rows="10" class="noborder" id="sm"></textarea></td>
</tr>
</table>
<br/>
<input type="button" name="btnAdd" id="btnAdd" value="新增行" />
<input type="button" name="btnDel" id="btnDel" value="删除行" />
<input type="button" name="btninsertAfter" id="btninsertAfter" value="向后插入行" />
<input type="button" name="btninsertBefore" id="btninsertBefore" value="向上插入行" />
<br/>
<input name="itmes_sl" id="itmes_sl" type="hidden" value="0" />
<div align="center">
<input type="submit" name="button" id="button" value="提交" />
</div>
</form>
</div>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>练习</title>
<link href="main.css" rel="stylesheet" type="text/css" />
<script src="lib/jquery.js" type="text/javascript"></script>
<script src="jquery.validate.js" type="text/javascript"></script>
<script src="localization/messages_cn.js" type="text/javascript"></script>
<script type="text/javascript">
var i = 0;
//初始化各表单控件ID
function initControlName()
{
var k=1;
$("input[name='id']").each(function () {
$(this).parents("tr").find("select").each(
function()
{
if($(this).attr("name")!="id")$(this).attr("name",$(this).attr("name").split('_')[0]+"_"+k);
}
);
$(this).parents("tr").find("input").each(
function()
{
if($(this).attr("name")!="id")$(this).attr("name",$(this).attr("name").split('_')[0]+"_"+k);
if($(this).attr("name").split('_')[0]=="mc")
{
//动态验证
$(this).rules("add", { required: true});
}
}
);
k++;
});
//写入多少行数
$("#itmes_sl").val(i);
}
$().ready(function() {
var run=false;
$("#listItemTable tr").eq(1).hide();
$("#form1").validate({
rules: {
xxx: "required",
}
});
//向上插入行
$("#btninsertAfter").click(function ()
{
var tr=$("#listItemTable tr").eq(1).clone();
var sourcetr=$("input[name='id']:checked").parents("tr");
tr.show();
tr.insertAfter(sourcetr);
initControlName();
});
//向下插入行
$("#btninsertBefore").click(function ()
{
var tr=$("#listItemTable tr").eq(1).clone();
var sourcetr=$("input[name='id']:checked").parents("tr");
tr.show();
tr.insertBefore(sourcetr);
initControlName();
});
$("#btnAdd").click(function () {
//复制一行
var tr=$("#listItemTable tr").eq(1).clone();//$(this).parents("tr");
tr.show();
tr.appendTo("#listItemTable");
i++;
if(run)initControlName();
});
//删除行
$("#btnDel").click(function () {
$("input[name='id']:checked").each(function () {
$(this).parents("tr").remove();
i--;
}
);
initControlName();
});
//初始化行
for(var n=0;n<5;n++)
{
$("#btnAdd").click();
}
$("#itmes_sl").val(5);
initControlName();
//初如化下拉列表
var l=0;
$("select[name^='jbytlx']").each(function () {
$(this).attr("selectedIndex",l);
l++;
});
run=true;
});
</script>
</head>
<body>
<div class="pageContent">
<form id="form1" name="form1" method="post" >
<input name="flag" type="hidden" value="save" />
<h1 align="center">分类汇总</h1>
<br />
<br/>
文本A:
<input name="xxx" type="text" class="text" id="xxx" size="50" />
<br />
文本B:
<input name="yyy" type="text" class="text" id="yyy" />
日期:
<input name="dcrq" type="text" class="text" id="dcrq" value="" />
<br />
<br />
<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#000000" id="listItemTable">
<tr>
<td width="100" align="center" bgcolor="#FFFFFF">序号 </td>
<td align="center" bgcolor="#FFFFFF">下拉框</td>
<td align="center" bgcolor="#FFFFFF">文本1</td>
<td align="center" bgcolor="#FFFFFF">文本2</td>
<td align="center" bgcolor="#FFFFFF">文本3</td>
<td align="center" bgcolor="#FFFFFF">文本4</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><label>
<input type="radio" name="id" id="id" />
</label></td>
<td bgcolor="#FFFFFF">
<select name="jbytlx_id" id="jbytlx_id">
<option>请选择...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select> </td>
<td bgcolor="#FFFFFF"><input name="mc_0" type="text" class="noborder" size="8" id="mc_0" /></td>
<td bgcolor="#FFFFFF"><input name="t2_0" type="text" class="noborder" size="8" id="t2_0"/></td>
<td bgcolor="#FFFFFF"><input name="t3_0" type="text" class="noborder" size="8" id="t3_0"/></td>
<td bgcolor="#FFFFFF"><input name="t4_0" type="text" class="noborder" size="8" id="t4_0"/></td>
</tr>
</table>
<table width="100%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#000000" id="listItemTable">
<tr>
<td width="100" align="center" nowrap="nowrap" bgcolor="#FFFFFF">
说明 </td>
<td height="150" colspan="10" bgcolor="#FFFFFF"><textarea name="sm" cols="45" rows="10" class="noborder" id="sm"></textarea></td>
</tr>
</table>
<br/>
<input type="button" name="btnAdd" id="btnAdd" value="新增行" />
<input type="button" name="btnDel" id="btnDel" value="删除行" />
<input type="button" name="btninsertAfter" id="btninsertAfter" value="向后插入行" />
<input type="button" name="btninsertBefore" id="btninsertBefore" value="向上插入行" />
<br/>
<input name="itmes_sl" id="itmes_sl" type="hidden" value="0" />
<div align="center">
<input type="submit" name="button" id="button" value="提交" />
</div>
</form>
</div>
</body>
</html>