1

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

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

将链接到:

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

或者这是不可能的?

4

5 回答 5

4

标签的for属性必须与<input>它所引用的元素的 ID 相匹配。在您的情况下,它将类似于:

<label for="member_id_8994"></label>
<input id="member_id_8994" name="member_ids[]" type="checkbox" value="8994">
于 2013-03-20T21:20:45.843 回答
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">
于 2013-03-20T21:26:34.303 回答
1

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

它们不能具有相同的 ID。

一旦你把它排除在外,for在标签上设置就变得非常简单。

于 2013-03-20T21:22:27.187 回答
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());
             }
         });
    });
}
于 2013-03-20T21:25:21.187 回答
0

我怀疑这是否可能。标签的 for 与输入的 id 属性相关联。实现目标的一种方法可能是通过 javascript,例如淘汰赛的声明性绑定。

在这里查看: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

于 2013-03-20T21:26:41.740 回答