首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • javascript 和 php 同时获取同名表单问题,求助高手,急急急急......... [已结贴,结贴人:magicone]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-27 21:07:03 楼主
    遇到一个很棘手的问题....  搞不定有丢饭碗的可能..... 大家本着同为学计算机的兄弟,多帮忙.... 分不多,真要是解决了请您吃饭都没问题

    我要用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]拿来用好像不行啊......

    急呀........
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-27 21:40:281楼 得分:0
    可以给同名表单一个同名的id,在javascript中通过id来获取来获取表单数组的值进行处理!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-27 22:21:502楼 得分:0
    噢,如果实现,写个样子可以吗?php我还会点,但是javascript比较烂
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-28 09:26:093楼 得分:50
    先给你的表单增加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);
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-28 09:33:024楼 得分:0
    你为什么要这样取名呢!很奇特哦。
    还有就是id在一个页面中最好是 唯一的。比较符合标准。

    对于名称相同的。可以用 楼上说的
    getElementsByName()获取 。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-28 09:35:285楼 得分:0
    document.getElementsByName可以通过表单name或id取得表单对象
    document.getElementsByName("selectban")[i].style.display=''表单就显示
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-28 09:49:296楼 得分:0
    3楼的应该吧name设成selectban吧 getElementsByName 获取对象的数组  循环即可

    var obj=document.getElementsByName("selectban");
    for(i=0;i <obj.length;i++)
    {
        alert(obj[i].value);
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-02-28 14:06:027楼 得分:0
    搞定了,多谢大家.

    另外说一下,表单显示,我写成document.article.selectban(i).style.display="" ; 也可以,效果一样

    好像在javascript里()和[]都可以表示数组吧.....

    还有,谁知道哪有比较完整的javascript的语法书?最好是chm的,方便用的时候查

    谢谢
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved