还想在下面的这个页中,也就是addrow()的验证里实现支出和收入的文本框两者只能有一者存在数据。
当两者等于空时:alert("你输入了事项,但没有输入支出或收入的数据!\n");
当两者不等于空时:alert("在一个事项里,同时存在了支出和收入数据,这是不允许的!\n");
高手支招啊!!! 这个问题的关键是:
1、因为是复制,所以新增加的行内控件是同名的;
2、不知道新增加的行是否会存在HTML DOM对象?
解决思路:
1、在遍历控件并检查控件值时判断两个控件是不是相邻的;
2、如果确定新增加的行存在HTML DOM对象,那么判断这两个控件是不是存在于同一行内ROWS(*)
<html>
<head>
<title></title>
<script language="javascript">
var Index=1;
function isnum(str)
{
rset="";
for(i=0;i<str.length;i++)
{
if(str.charAt(i)>="0" && str.charAt(i)<="9" || str.charAt(i)==".")
{
}
else
{
return 0;
}
}
return 1;
}
function AddRow()
{
var isneed = true;
//获得Table对象
var tableObject = document.getElementById("CloneNodeShow");
//判断是否有必要添加新的输入行
for( var j = 0; j < tableObject.all.tags("input").length; j++ )
{
var inputs = tableObject.all.tags("input")[j];
if( inputs.type == "text" && inputs.name == "item" )
{
if (inputs.value != "")
{
if (inputs.value.search(/[%$<>/&'#^,()]/gi) != -1)
{
alert("输入的内容中不能包含有< > / , ( ) % & ‘ # $ ^等字符,请正确输入!\n");
isneed = false;
inputs.focus();
return;
}
}else{
alert("系统提示你:你还有足够的空行来填写你想要的内容!\n");
isneed = false;
inputs.focus();
return;
}
} if( inputs.type == "text" && inputs.name == "income" )
{
if (inputs.value != "")
{
if (! isnum(inputs.value))
{
alert("如果输入的确实是你的收入帐目,那么应该是数字才对!\n");
isneed = false;
inputs.focus();
return;
}
}
}
if( inputs.type == "text" && inputs.name == "expend" )
{
if (inputs.value != "")
{
if (! isnum(inputs.value))
{
alert("如果输入的确实是你的支出费用,那么应该是数字才对!\n");
isneed = false;
inputs.focus();
return;
}
}
}
} if( isneed )
{
Index++;
var CloneRow=document.getElementById("CloneRow");
var NewRow=CloneRow.cloneNode(true);
var input=NewRow.getElementsByTagName("input");
for(var i=0;i<input.length;i++)
{
if(input[i].type=="text")
input[i].value="";
}
tableObject.appendChild(NewRow);
NewRow.cells[0].innerHTML=Index+".";
}
}
</script>
</head>
<body>
<table border="1" bordercolor=navy align=center>
<tr align=center valign=middle>
<td> 序号 </td>
<td> 事项 </td>
<td> 收入 </td>
<td> 支出 </td>
</tr>
<tbody id="CloneNodeShow">
<tr id="CloneRow">
<td align=center valign=middle> 1. </td>
<td>
<input size="26" type="text" name="item">
</td>
<td align="center" valign="middle">
<input type="text" name="income">
</td>
<td align="center" valign="middle">
<input type="text" name="expend">
</td>
</tr>
</tbody>
<tr><td colspan="4" align="center"><input type="button" value="增加" onclick="AddRow()"></td></tr>
</table>
</body>
</html>
当两者等于空时:alert("你输入了事项,但没有输入支出或收入的数据!\n");
当两者不等于空时:alert("在一个事项里,同时存在了支出和收入数据,这是不允许的!\n");
高手支招啊!!! 这个问题的关键是:
1、因为是复制,所以新增加的行内控件是同名的;
2、不知道新增加的行是否会存在HTML DOM对象?
解决思路:
1、在遍历控件并检查控件值时判断两个控件是不是相邻的;
2、如果确定新增加的行存在HTML DOM对象,那么判断这两个控件是不是存在于同一行内ROWS(*)
<html>
<head>
<title></title>
<script language="javascript">
var Index=1;
function isnum(str)
{
rset="";
for(i=0;i<str.length;i++)
{
if(str.charAt(i)>="0" && str.charAt(i)<="9" || str.charAt(i)==".")
{
}
else
{
return 0;
}
}
return 1;
}
function AddRow()
{
var isneed = true;
//获得Table对象
var tableObject = document.getElementById("CloneNodeShow");
//判断是否有必要添加新的输入行
for( var j = 0; j < tableObject.all.tags("input").length; j++ )
{
var inputs = tableObject.all.tags("input")[j];
if( inputs.type == "text" && inputs.name == "item" )
{
if (inputs.value != "")
{
if (inputs.value.search(/[%$<>/&'#^,()]/gi) != -1)
{
alert("输入的内容中不能包含有< > / , ( ) % & ‘ # $ ^等字符,请正确输入!\n");
isneed = false;
inputs.focus();
return;
}
}else{
alert("系统提示你:你还有足够的空行来填写你想要的内容!\n");
isneed = false;
inputs.focus();
return;
}
} if( inputs.type == "text" && inputs.name == "income" )
{
if (inputs.value != "")
{
if (! isnum(inputs.value))
{
alert("如果输入的确实是你的收入帐目,那么应该是数字才对!\n");
isneed = false;
inputs.focus();
return;
}
}
}
if( inputs.type == "text" && inputs.name == "expend" )
{
if (inputs.value != "")
{
if (! isnum(inputs.value))
{
alert("如果输入的确实是你的支出费用,那么应该是数字才对!\n");
isneed = false;
inputs.focus();
return;
}
}
}
} if( isneed )
{
Index++;
var CloneRow=document.getElementById("CloneRow");
var NewRow=CloneRow.cloneNode(true);
var input=NewRow.getElementsByTagName("input");
for(var i=0;i<input.length;i++)
{
if(input[i].type=="text")
input[i].value="";
}
tableObject.appendChild(NewRow);
NewRow.cells[0].innerHTML=Index+".";
}
}
</script>
</head>
<body>
<table border="1" bordercolor=navy align=center>
<tr align=center valign=middle>
<td> 序号 </td>
<td> 事项 </td>
<td> 收入 </td>
<td> 支出 </td>
</tr>
<tbody id="CloneNodeShow">
<tr id="CloneRow">
<td align=center valign=middle> 1. </td>
<td>
<input size="26" type="text" name="item">
</td>
<td align="center" valign="middle">
<input type="text" name="income">
</td>
<td align="center" valign="middle">
<input type="text" name="expend">
</td>
</tr>
</tbody>
<tr><td colspan="4" align="center"><input type="button" value="增加" onclick="AddRow()"></td></tr>
</table>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货