2013-03-20 70 views
1

我有一个标签标签,我试图链接到输入类型复选框标签。我有多个标签和多个复选框输入,它们都具有相同的id和相同的名称,但具有不同的值。有人能指导我如何构建一个链接到一个值而不是一个ID的标签吗?所以这个:HTML标签“For”值

<label for="8994"></label> 

会链接到:

<input id="member_ids_" name="member_ids[]" type="checkbox" value="8994"> 

或者,这是不可能的?

+2

这是不可能的。 – 2013-03-20 21:20:17

+1

'他们都有相同的ID'这是他们不应该有相同的ID的问题。 – Musa 2013-03-20 21:22:28

回答

4

标签的for属性必须与它引用的<input>元素的ID匹配。在你的情况下,它会是这样的:

<label for="member_id_8994"></label> 
<input id="member_id_8994" name="member_ids[]" type="checkbox" value="8994"> 
1

你的DOM元素必须具有不同的ID。 即使每个ID都设置为任何值......或任何其他值。

它们不能有相同的ID。

一旦你明白了这一点,在标签上设置for就变得非常简单。

0

一个可能不起作用的jQuery解决方案。

$(function() { 
    ModifyLabels({target: $('input')}); 
    $('input').change(ModifyLabels); 
}); 

function ModifyLabels(eventObject) { 
    var inputs = $(eventObject.target); 
    input.each(function(i, input) { 
     $('label').each(function(i, label) { 
      if ($(label).attr('for') == $(input).val()) { 
       $(input).attr('id', $(input).val()); 
      } 
     }); 
    }); 
} 
2

表单元素的'for'必须与相同表单元素的ID匹配。

<label for="id_1"></label> 
<input id="id_1" name="member_ids[1]" type="checkbox" value="8994"> 

<label for="id_2"></label> 
<input id="id_2" name="member_ids[2]" type="checkbox" value="8994"> 

<label for="id_3"></label> 
<input id="id_3" name="member_ids[3]" type="checkbox" value="8994"> 

<label for="id_3"></label> 
<input id="id_3" name="member_ids[4]" type="checkbox" value="8994"> 
0

我怀疑这是否可能。 Label的for绑定到输入的id属性。实现你的目标的一种方法可能是通过javascript,knockout的声明式绑定等。

检查我们这里:沿着这条线http://knockoutjs.com/documentation/introduction.html

东西:

<label data-bind="click: myInput"></label> 
<input type="checkbox" id="hello"> 

<script type="text/javascript"> 
    var myInput= { 
     //implement the function to bind the label to the input#hello here 
     } 
    }; 
</script> 

http://knockoutjs.com/documentation/click-binding.html