$('input[type=checkbox]').click(function() {
var isReadOnly = $(this).attr("readonly") === undefined ? false : true;
if (isReadOnly) {
return false;
}
// other code never executed if readonly is true.
});
$('input').each(function(){
if(true == ($(this).prop('disabled'))){
var iTop = $(this).position().top;
var iLeft = $(this).position().left;
var iWidth = $(this).width();
var iHeight = $(this).height();
$('body').append('<div class="disabledClick" style="position:absolute;top:'+iTop+'px;left:'+iLeft+'px;width:'+iWidth+'px;height:'+iHeight+'px;background:transparent;"></div>');
}
});
//delegate a click function for the 'disabledClick'.
$('body').on('click', '.disabledClick', function(){
console.log('This is the click event for the disabled checkbox.');
});
$('.checkbox-label').on(function (e) {
e.stopPropagation();
let checkBox = $(this).find('.input-checkbox');
// if checkbox is disabled, do something
if (checkBox.prop('disabled')) {
// I usually put some enter password to confirm change... but I know you want to just show a click
console.log('click')
} else {
// your checkbox should act as normal
console.log('click')
}
})
5条答案
按热度按时间1dkrff031#
再次阅读有关从
JoãoSilva
使用readonly
的注解。您可以使用该注解并将其与click事件中的某些逻辑联系起来。使用
readonly
会给你禁用的外观,就像disabled
一样,但它仍然允许你点击它。按如下方式使用readonly:
然后在脚本中取消该事件(如果设置了readonly)。
DEMO(第一个字母)
tag5nh1u2#
您将无法在所有浏览器中可靠地捕获单击事件。最好的办法是在上面放置一个透明元素来捕获单击。
HTML语言
JavaScript语言
注:这是我改进的this question的一个想法。
nc1teljy3#
你不能......但是你可以通过在输入上放置一个div来伪装它,并在该div上定义click函数。
Here's the working jsFiddle
vxqlmq5t4#
我没有看到其他选项,如添加
<div>
块层超过复选框。因此,解决方案应该如下:演示:http://jsfiddle.net/q6u64/
q35jwt9p5#
实际上,我经常这样做,以阻止人们更改复选框,如果这些更改已经提交到数据库。但是,如果您想更改它或至少看到一个点击..那么我只需要将输入 Package 在一个标签元素中,并检查子输入。
于飞:
查询:
希望这对你有帮助:)