+ -
当前位置:首页 → 问答吧 → 不同的form里面含相同id的checkbox,如何选取

不同的form里面含相同id的checkbox,如何选取

时间:2009-05-28

来源:互联网

现在有下面两个form:

<form id="A" name="A">
    <input type="checkbox" id="CC" name="CC" checked>
</form>

<form id="B" name="B">
    <input type="checkbox" id="CC" name="CC">
</form>

我现在要得到form A里的 checkbox CC的checked状态是否被激活。
我尝试过下列方法:
1,$( "#A :input[type='checkbox'][@name='CC']").checked

2,$( "#A :checkbox[@name='CC']").checked

3,$( "#A :input[@name='CC']").checked

4,$( "#A").find(" :checkbox[@name='CC']").checked

都不行!!!
现在用了循环:

var bln = false;
$("#A").find(":checkbox").each(function(){
        if(this.name == 'CC'){
            if(this.checked == true){
                               // 这里只能放alert,其它任何函数都会报错(包括赋值bln = true;)
                //bln = true;
                               alert("被选取");
            }else{
                               // 这里只能放alert,其它任何函数都会报错(包括赋值 bln = false;)
                //bln = false;
                               alert("没被选取");
            }
        }        
    });


谁能告诉我正确方法啊,多谢啦!!

作者: leelight   发布时间: 2009-05-28

绝对不要用相同的id,这是不符合W3C规范的,你实在不知道怎么避免冲突,不妨把form的id作为前缀,写成A_CC、B_CC

不过看不出你有必要给input加上id,name已经够用了。此外IE有个将input控件的name作为id的bug,用id获取是有危险的。

最后就是jQuery 1.3中,属性选择器是不用@的,去掉就行了

作者: keakon   发布时间: 2009-05-28

多谢,可惜去掉@还是不行,我是用firefox 3测试的
看来还是用不同的Id算了
因为我后台用php获取文件,如果id相同的话,会省事点,不过没办法,只好改了
谢谢!

作者: leelight   发布时间: 2009-05-28

你这样写就行了,值是true或false:
$( "#A>:checkbox[name='CC']").is(':checked');

提交表单都是用name属性啊,ajax提交虽然不需要name,但关服务器端什么事,你又不需要传id,map的key可以自己随便取啊

作者: keakon   发布时间: 2009-05-28

应为我要上传文件,需要name
这样放置form和file 是为了应用需要,说不太清楚  

$( "#A>:checkbox[name='CC']").is(':checked');
不过这个还是不行,取不到那个checkbox,  size()是0
算了,还是改成单一的独立name和id,也符合你说的W3C标准

从你这学了很重要的几个语法,多谢多谢!!

作者: leelight   发布时间: 2009-05-29

我可以拿到啊,你看看你的版本是不是1.3以上

我就是说提交默认是用name啊,关id什么事,name重复又没关系
[ 此帖被keakon在2009-05-29 08:42重新编辑 ]

作者: keakon   发布时间: 2009-05-29

首先去掉相同的ID,你这里似乎并没有用到ID啊~~~

作者: jokeykiss   发布时间: 2009-05-31

相关阅读 更多