用图像替换复选框?

时间:2015-04-13 21:46:06

标签: javascript html checkbox

我正在尝试用三个不同的图像替换html表单中的三个复选框。这个想法是用户可以通过点击它们而不是点击复选框来选择图片。我一直在添加一些代码,但无法弄清楚如何使所有复选框都可选。目前只有第一张图片在点击时才有效。谁能帮我?我是一个真正的新手用javascript我很害怕。见fiddle here

表格

<form id="form1" action="" method="GET" name="form1">
<div class="col-md-3">
             <img src="https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/128/unchecked_checkbox.png" title="blr" id="blr"><input type="checkbox" id="imgCheck"  name="pic1" value=9></div><div class="col-md-3">
             <img src="https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/128/unchecked_checkbox.png" title="blr" id="blr"><input type="checkbox" id="imgCheck"  name="pic2" value=12></div><div class="col-md-3">
          <img src="https://cdn2.iconfinder.com/data/icons/windows-8-metro-style/128/unchecked_checkbox.png" title="blr" id="blr"><input type="checkbox" id="imgCheck"  name="pic3" value=7></div>
   <input type="submit" name="submit" value="Add" />
</div>
</form>

javascript

$('#blr').on('click', function(){
        var $$ = $(this)
        if( !$$.is('.checked')){
            $$.addClass('checked');
            $('#imgCheck').prop('checked', true);
        } else {
            $$.removeClass('checked');
            $('#imgCheck').prop('checked', false);
        }
    })

3 个答案:

答案 0 :(得分:2)

为什么要使用JavaScript?您可以使用CSS:checked属性和label元素执行此操作。

&#13;
&#13;
input[type=checkbox] {
  display: none;
}

:checked+img {
  border: 2px solid red;
}
&#13;
<label>
  <input type="checkbox" name="checkbox" value="value">
  <img src="http://lorempixel.com/50/50/" alt="Check me">
</label>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

这种情况正在发生,因为您使用多个相同的ID。 ID应该是唯一的。不要使用id="blr",请尝试使用class="blr"。我更新了小提琴:

http://jsfiddle.net/0rznu4ks/1/

答案 2 :(得分:0)

首先,正如Amar所​​说,id应该是唯一的。使用多个元素的类。 还要注意分号和关闭html标签。

问题: 使用函数.siblings()来获取相关的复选框元素。

$('.blr').on('click', function () {
    var $$ = $(this);
    if (!$$.is('.checked')) {
        $$.addClass('checked');
        $$.siblings('input.imgCheck').prop('checked', true);
    } else {
        $$.removeClass('checked');
        $$.siblings('input.imgCheck').prop('checked', false);
    }
});

在此处查看演示: http://jsfiddle.net/yd5oq032/1/

祝你好运!