2011-06-21 26 views
0

我有一个复选框的列表,每个链接旁边都有一个链接。喜欢的东西:如何设置链接检查复选框的变量名称,编号,值

<form name="checkboxlist" action="..." > 
    <input type="checkbox" id="1" name="pageCB" value="1"/> 
    <a id="1" href="#" onclick="sub(id)>click here</a> 
    <input type="checkbox" id="2" name="pageCB" value="2"/> 
    <a id="2" href="#" onclick="sub(id)>click here</a> 
    ... 
    ... 
    <input type="submit" /> 
</form> 

我目前正在使用:

<script> 
    function sub(id){ 
     $("input:checkbox[value=id]").attr("checked", true); 
     document.checkboxlist.submit(); 
    } 
</script> 

但这显然不读变量ID,我真的想避免,如果每个ID语句有几个其中有数百个。有没有办法做到这一点?

+0

你能修改html吗?在页面上使用多个相同的ID是无效的。我建议使用

+0

如果您知道该id,它不会比$(“#”+ id).attr(“checked”,true)更简单。 – Gabe

回答

3

编辑:我看到你也使用重复的ID。这是无效的,当通过ID选择时,事情将不能正常工作。


数字标识在HTML4中无效。

不管怎么说,改变这种:

$("input:checkbox[value=id]") 

这样:

$("input:checkbox[value='" + id + "']") 

这样可以将的id值到选择字符串,因为我还添加了周围的属性选择值引号这是文档所要求的。

,改变你的在线处理程序是:

<a id="2" href="#" onclick="sub(this.id)>click here</a> 

...因为this是对元素的引用点击,this.id是其ID属性的参考。

+0

是的,我是个白痴。我曾尝试将它连接起来,但没有在属性周围引用引号就无法运行。 –

+0

@ down-voter:解释你的投票,如果你能够。 – user113716

5

你不应该使用链接,你应该使用<label>标签。

这就是它的目的。

<input type="checkbox" name="mybox" id="mybox"> 
<label for="mybox">Click this box</label> 

这适用于所有表单字段,并且比构建JS来做一些已经存在的东西要好得多。

+1

同意,但这不会触发提交复选框更改 –

+0

啊,但您可以轻松地将该事件附加到表单中的所有标签,但这不会是一个非常好的用户体验。 – Seth

+0

确实。在点击时自动提交表单看起来有点奇怪。哦vell ... OP知道他想要什么,我猜:) –

0

如果我理解正确,您希望通过单击关联的元素来支持选择复选框,并单击提交表单。我建议a)使用<label>元素代替<a>,因为它们可以通过id与输入相关联,并且b)不使用数字,重复id属性。

<form name="checkboxlist" action="#"> 
    <input type="checkbox" id="a" name="pageCB" value="1"/> 
    <label for="a">Click here</label> 
    <input type="checkbox" id="b" name="pageCB" value="2"/> 
    <label for="b">Click here</label> 
</form>  

<script> 
    $(document).ready(function() { 
     $('input:checkbox').change(function(){ 
      $(this).parent('form').submit(); 
     }); 
    }); 
</script>