用for循环控制数组表单控件的问题,挺有趣的,高手请进....急急急

magicone 2008-02-27 12:04:49
写了一个js函数,来判断页面中的控件是否输入了内容.
其它几个都好搞定.
但是ban这个控件,控件名是个数组
想要的效果是,如果ban(0)至ban(6)都为空,才显示alert('请选择....');
我是这么写的
for (var j = 0; j <= 6; j++){
if(document.article.ban(j).value == '')
{
sum=sum+j ;
if (sum>=21)
{
alert('请选择....');
document.article.ban(j).focus();
return false;
}
}
}
试过不行,好像直接就跳出这个函数了.奇怪

我的函数
function checkedit()
{
if(document.article.title.value == '')
{
alert('请输入标题.');
document.article.title.focus();
return false;
}

if(document.article.author.value == '')
{
alert('请输入作者.');
document.article.author.focus();
return false;
}
for (var j = 0; j <= 6; j++){
if(document.article.ban(j).value == '')
{
sum=sum+j ;
if (sum>=21)
{
alert('请选择....');
document.article.ban(j).focus();
return false;
}
}
}

if(document.article.date.value == '')
{
alert('请选择日期.');
document.article.date.focus();
return false;
}
return true;
}
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiov3535 2009-06-08
  • 打赏
  • 举报
回复
ding
figoren 2008-02-28
  • 打赏
  • 举报
回复
试下 ban[][j]j=0,1,2行不行
l_wenb 2008-02-28
  • 打赏
  • 举报
回复
up!先顶!
joybo 2008-02-28
  • 打赏
  • 举报
回复
先给你的表单增加id:
<select id="selectban" name="ban[]" size="1" style="display:none" >
<option value= ""> </option>
<option value= "01第一条" > 01第一版 </option>
<option value= "01第二条" > 01第二条 </option>
<option value= "01第三条" > 01第三条 </option>
</select>
<select id="selectban" name="ban[]" size="1" style="display:none">
<option value= ""> </option>
<option value= "02第一条" > 02第一版 </option>
<option value= "02第二条" > 02第二条 </option>
<option value= "02第三条" > 02第三条 </option>
</select>
<select id="selectban" name="ban[]" size="1" style="display:none">
<option value= ""> </option>
<option value= "03第一条" > 03第一版 </option>
<option value= "03第二条" > 03第二条 </option>
<option value= "03第三条" > 03第三条 </option>
</select>

然后在javascript中通过document.getElementsByName就可以输出值:

for(i=0;i <document.getElementsByName("selectban").length;i++){
alert(document.getElementsByName("selectban")[i].value);
}

document.getElementsByName可以通过表单name或id取得表单对象
document.getElementsByName("selectban")[i].style.display=''表单就显示
magicone 2008-02-27
  • 打赏
  • 举报
回复
上面那个问题搞定了......

遇到一个更棘手的问题.... 搞不定有丢饭碗的可能..... 大家本着同为学计算机的兄弟,多帮忙.... 分不多,真要是解决了请您吃饭都没问题

我要用php获取几个同名的下拉表单数据,php中的同名的表单名必须用数组如:name[]

但是又要用javascript来做判断控制display, 当选择上一级下拉列表时,下面出现相应的第二级下拉列表。但是javascript中的获取同名数组时是自动取的,也就是只要 name 就可以了,不用后面的[]。而且会自动取成name(0) name(1) .....

我设想javascript 用name[](i)的形式来处理。但是好像不行....

javascript的函数为:

function editban(){

for (var j = 0; j <= 2; j++)
{
document.article.'ban[]'(i).style.display="none" ;
}

if (document.article.newspaper.value == '01) document.article.'ban[]'(0).style.display="" ;
if (document.article.newspaper.value == '02) document.article.'ban[]'(1).style.display="" ;
if (document.article.newspaper.value == '03) document.article.'ban[]'(2).style.display="" ;
}

php页的相关代码

<form name="article" method="post" encType="multipart/form-data" action="edit.php" onsubmit="return checkedit()">
<select name="newspaper" size="1" onchange="return editban()">
<option value= "" > </option>
<option value= "01"> 01 </option>
<option value= "02"> 02 </option>
<option value= "03"> 03 </option>
</select>

<select name="ban[]" size="1" style="display:none" >
<option value= ""> </option>
<option value= "01第一条" > 01第一版 </option>
<option value= "01第二条" > 01第二条 </option>
<option value= "01第三条" > 01第三条 </option>
</select>
<select name="ban[]" size="1" style="display:none">
<option value= ""> </option>
<option value= "02第一条" > 02第一版 </option>
<option value= "02第二条" > 02第二条 </option>
<option value= "02第三条" > 02第三条 </option>
</select>
<select name="ban[]" size="1" style="display:none">
<option value= ""> </option>
<option value= "03第一条" > 03第一版 </option>
<option value= "03第二条" > 03第二条 </option>
<option value= "03第三条" > 03第三条 </option>
</select>

<input class="bginput" accessKey="y" type="submit" value=" 提交 ">
</form>



还有个检查是否已选择的小函数也有此问题

var sum=0 ;
for (var j = 0; j <= 6; j++)
{ if(document.article.ban[](j).value == '')
{
sum=sum+j ;
if (sum>=21)
{
alert('请选择刊发到的版次.');
return false;
break;
}
}
}


有没有好的办法,javascript这边直接把ban[i]拿来用好像不行啊......

急呀........
westboys 2008-02-27
  • 打赏
  • 举报
回复
你的 sum 的定义在什么地方呢???

如果你这样写的话,会有问题的,因为 sum 的初始化值不知道是多少,你输出一下看看。
harston 2008-02-27
  • 打赏
  • 举报
回复
function checkedit()
{
if(document.article.title.value == '')
{
alert('请输入标题.');
document.article.title.focus();
return false;
}

if(document.article.author.value == '')
{
alert('请输入作者.');
document.article.author.focus();
return false;
}
var checkFlag=false;
for (var j = 0; j <= 6; j++){
if(document.article.ban(j).value != '')
{
checkFlag=true;
}
if (checkFlag)
{
alert('请选择....');
document.article.ban(j).focus();
return false;

}

}

if(document.article.date.value == '')
{
alert('请选择日期.');
document.article.date.focus();
return false;
}
return true;
}

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧