0
应用程序包括Jquery 1.9.1,undescore.js和jquery plagin dataTables。复选框模糊行为
我的复选框被包裹如下:
<label style="top: 3px; position: relative;" class="checkbox" id="IsSpreadCheckBox">
<input type="checkbox" name="IsSpread" id="IsSpread">
<span></span>
</label>
元label.checkbox跨度具有背景图像对于每种情况:选中,未选中禁用。
它的Jquery onclick处理程序:
$(".checkbox span").click(function() {
var backgroundContainer = $(this); //span with background image
var checkbox = backgroundContainer.parent().find("input[type='checkbox']"); //hidden checkbox itself
if (!backgroundContainer.hasClass("disabled")) {
if (backgroundContainer.hasClass("checked")) {
checkbox.removeAttr('checked').prop("checked", false);
//Also tried checkbox.removeAttr('checked') or checkbox.prop("checked", false);
backgroundContainer.removeClass("checked");
}
else {
checkbox.attr('checked', 'checked').prop("checked", true);
//checkbox.attr('checked', 'checked') or checkbox.prop("checked", true);
backgroundContainer.addClass("checked");
}
}
});
而且我有一些代码,使这个元素,如果需要的页面加载后停用。
虽然调试工作和隐藏复选框元素被选中或取消选中正确(复选框图像是正确的)。此外,该工作在目标浏览器精细IE 10(服务器端接收正确的复选框值),但在我与萤火火狐29而在形式调试提交我看到:
$("#IsSpread").attr("checked") // checked
$("#IsSpread").prop("checked") // false
和服务器总是收到false。
对此元素的属性更改进行调试时不提供任何内容。
如果以编程方式使得它在的$(document)检查。就绪()它总是发送真正条件。
谢谢!
'backgroundContainer'已经是一个jQuery对象,因此您可以使用它而不是执行'$(backgroundContainer)'。你怎么隐藏复选框? – Pete 2014-09-05 08:58:25
看看[fiddle](http://jsfiddle.net/yrvcLsu9/)。这是你想要的吗?它看起来像'.prop'只在选择元素时才起作用。重新选择元素后,'.prop'更改会丢失。 – Regent 2014-09-05 09:50:10
和[更新的小提琴](http://jsfiddle.net/yrvcLsu9/1/)与“发送”按钮。通过“元素被选中”,我的意思是选择'var element = $('...')',改变'element'属性,然后再次选择元素不具有这些属性。 – Regent 2014-09-05 09:55:46