将复选框替换为图像



我正在尝试用三个不同的图像替换html表单中的三个复选框。这个想法是用户可以通过单击图片而不是单击复选框来选择图片。我一直在输入一些代码,但无法弄清楚如何使所有复选框都可选。目前,单击时只有第一个图像有效。谁能帮我?恐怕我是一个真正的JavaScript新手。在这里看小提琴

表格

<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);
        }
    })

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

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

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

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

首先,正如 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/

祝你好运!

最新更新