我正在尝试用三个不同的图像替换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);
}
})
答案 0 :(得分:2)
为什么要使用JavaScript?您可以使用CSS
,:checked
属性和label
元素执行此操作。
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;
答案 1 :(得分:1)
这种情况正在发生,因为您使用多个相同的ID。 ID应该是唯一的。不要使用id="blr"
,请尝试使用class="blr"
。我更新了小提琴:
答案 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/
祝你好运!