请教一个简单的表单数组统计

shenxian5 2010-01-21 11:50:09
如下表单

<form name="form1" onsubmit="getotalnum();">
<input type="hidden" value="0" name="totalnum" id="totalnum">
<input type="text" name="a1" value="A">
<input type="text" name="a2" value="B">
<input type="text" name="a3" value="C">
……
<input type="text" name="aN" value="N">
</form>

js:
<script>
function getotalnum(){
//这里的循环的函数应该怎么写?
document.getElementById('totalnum').value+=1;
}
</script>


Q:如何在提交表单的时候,通过函数getotalnum,将表单内,从a1到aN,只要value不为空的text项目总数统计出来?
也就是,在表单form1中,有a1到aN个text,只要输入了值,就给表单中隐藏属性的totalnum赋值,每次+1?

如:a1不为空,提交表单时,totalnum+1 ,a2不为空,totalnum+1+1一直循环到an?
...全文
118 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
呼吸先生 2010-01-21
  • 打赏
  • 举报
回复
用循环遍历啊,像你这个N是多少是没有关系的,如果你想说N个元素,元素类型不确定,那么就判断一下
document.getElementById('elementName').type=="text"
shenxian5 2010-01-21
  • 打赏
  • 举报
回复
怎么传过来?没理解。。。呵呵

其实我是想说,如果一个表单中有n个项目,这个n是不确定的,代表这个表单中a1到an,是不确定的个数,
怎么去统计这些不确定的项目?
呼吸先生 2010-01-21
  • 打赏
  • 举报
回复
那就看你怎么传过来了,如果是jsp,那么这样赋值var n = <%request.getAttribute("n")%>;
shenxian5 2010-01-21
  • 打赏
  • 举报
回复
如果这个n是个不确定的变量呢?比如10或者100都有可能?
呼吸先生 2010-01-21
  • 打赏
  • 举报
回复
LZ把循环里的4换成N,不知道能不能满足你啊。。
呼吸先生 2010-01-21
  • 打赏
  • 举报
回复

for(var i=1;i<=4;i++) {
var tmp = document.getElementById("a" + i).value;
if (tmp!=""){
document.getElementById('totalnum').value+="1";
}
}
alert(document.getElementById('totalnum').value);
}
shenxian5 2010-01-21
  • 打赏
  • 举报
回复
ls兄弟,好像不能统计到?

表单中name都已经更改成id了
tank_pp 2010-01-21
  • 打赏
  • 举报
回复

function getotalnum(){
for (var i=1;i<=N;i++){
if (document.getElementById('a'+i).value.length>0)
document.getElementById('totalnum').value+=1;
}
}
shenxian5 2010-01-21
  • 打赏
  • 举报
回复
自行解决了,感谢各位回复!!
shenxian5 2010-01-21
  • 打赏
  • 举报
回复
实际上我只要取a1到aN,不需要其他的内容的,但是如果在一个div内,会不会导致全部对象都被取值了?
如果用 var allText = document.getElementById("myDiv").getElementsByTagName("input");
这句的话?
shenxian5 2010-01-21
  • 打赏
  • 举报
回复
一楼是我举例的表单,如果一个表单,如:
<form>
<input id="a1" type="text" value="A">
<input id="b1" type="checkbox" value="B">
<input id="c1" type="radio" value="true">
……
</form>

这样会不会把所有对象都统计在内了?
duwa789 2010-01-21
  • 打赏
  • 举报
回复
myDiv是容纳所有需要被你统计的的容器,我是按照最简单想法来做。
duwa789 2010-01-21
  • 打赏
  • 举报
回复
你可以把你的情况更具体的说说吗。
shenxian5 2010-01-21
  • 打赏
  • 举报
回复
ls,如果有很多input,这样会出问题吗?
duwa789 2010-01-21
  • 打赏
  • 举报
回复

<div id="myDiv">
<input type=text />
<input type=text />
<input type=text />
<input type=text />
<input type=text />
<input type=text />
<input type=text />
<input type=text />
<input type=text />
<input type=text />
</div>
<div>
<input type=button value="Click here" onclick="getTotalNum();" />
<input type=text id="hidden" />
</div>



function getTotalNum() {
var totalNum = 0;
var allText = document.getElementById("myDiv").getElementsByTagName("input");
for (var i = 0, l = allText.length; i < l; i++) {
if (allText[i].value.length > 0) totalNum++;
}
document.getElementById("hidden").value = totalNum;
}
xmliy 2010-01-21
  • 打赏
  • 举报
回复

var inputs = document.getElementsByName('form1')[0].getElementsByTag('input'),
total = 0;
for(var i = 1, len = inputs.length; i <= len; i++) {
if(inputs[i].type == 'text' && inputs[i].value != '') total++;
}
document.getElementById('totalnum').value = total;
相关推荐
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2010-01-21 11:50
社区公告
暂无公告