日期:2014-05-16  浏览次数:20339 次

关于 CHECKBOX 与 JS、PHP 协调工作的问题

    在html中使用checkbox如下:

    <form name="frm1">
    <input type="checkbox" id="mycouse1" name="mycouse[]" value="datastruct">数据结构
    <input type="checkbox" id="mycouse2" name="mycouse[]" value="c++">C++
    <input type="checkbox" id="mycouse3" name="mycouse[]" value="c#">C#
    <input type="checkbox" id="mycouse4" name="mycouse[]" value="php">PHP
    </form>

    注意checkbox名中的“[]”字符,因为是把checkbox作为数组,在php中才能用foreach方法取得选中的值。

    但在js中document.frm1.mycouse[].length方法却不能用。只有类似于document.frm1.mycouse.length才可以,这样php就只能取选中的最后一个 mycouse 值了,不能取得所有的选中的 mycouse 值。

    解决办法:document.frm1["mycouse[]"].length。把整个form看作一个数组,checkbox[] 作为其中一个元素就可以了。

    checkbox_mycouse = document.frm1["mycouse[]"];
    for(var i=0; i<=checkbox_mycouse.length-1; i++)
    {
      if(checkbox_mycouse[i].checked)
        count++;
    }
    alert('有' + count + '选项被选中。');

    其实,如果 name="mycouse[]" 为 name="mycouse",则很简单:
    for(var i=0; i<=document.frm1.mycouse.length-1; i++)
    {
      if(document.frm1.mycouse[i].checked)
        count++;
    }

    作者:张庆(网眼) ,微博:http://t.qq.com/zhangking
    来自“网眼视界”:http://blog.why100000.com
    “十万个为什么”电脑学习网:http://www.why100000.com
     2012-8-22