2013-11-14 73 views
0

我有一个条件,必须检查或取消选中输入复选框,但它不起作用,我不知道该怎么办。我搜索并尝试了一些jquery复选框操作选项,但其中任何一个工作。通过控制台日志消息,我知道条件作品和输入复选框是可访问的。请帮我一下。jQuery ckeckbox操作问题

if(parseInt(permiso_acceso)==1) { 
    var valor = $('#permiso_acceso').val(); 
    console.log('Must be checked '+valor);//It works 
    $('#permiso_acceso').attr('checked',true); 
} else { 
    var valor = $('#permiso_acceso').val(); 
    console.log('Must be unchecked '+valor);//It works 
    $('#permiso_acceso').attr('checked',false); 

}

回答

1

代替的.attr,使用.prop jquery的方法(包含在jquery1.6)。这里是详细讨论link

if(parseInt(permiso_acceso)==1) { 
    var valor = $('#permiso_acceso').val(); 
    console.log('Must be checked '+valor);//It works 
    $('#permiso_acceso').prop('checked', true); 
} else { 
    var valor = $('#permiso_acceso').val(); 
    console.log('Must be unchecked '+valor);//It works 
    $('#permiso_acceso').prop('checked', false); 
} 

Try This in jsfiddle

+0

谢谢!它的工作 – FranQ

2

试试这个

jQuery的1.6+

使用.prop()函数:

$('.myCheckbox').prop('checked', true); 
$('.myCheckbox').prop('checked', false); 
如果你想检查是否复选框被选中

或不是:

$('form #mycheckbox').is(':checked'); 
0

val()将始终返回value元素的radiocheckbox元素的属性,无论是否打勾。你的代码的逻辑是正确的。

我会假设这个问题是由于permiso_acceso的值未设置为所选的checkbox值。

+0

我使用VAL()只是为了检查该复选框是访问 – FranQ

0

它发生,因为属性“选中”再次查询值“选中”,而不是真或假

+0

这是不正确的。 'checked'属性不需要任何特定的值。关键字的关键字的存在是所有需要的,但是应该为语义原因分配一个值。该值是否为“checked”或“true”或“foobar”完全取决于开发者。 –

+0

我刚刚检查过,你是对的,非常感谢) –

0

从我的理解,你要检查,并取消基于条件的复选框。 退房这个小提琴

var permiso_acceso = 1; 
if(permiso_acceso==1) { 
    var valor = $('#permiso_acceso').val(); 
    console.log('Must be checked '+valor);//It works 
    $('#permiso_acceso').attr('checked',true); 
} else { 
    var valor = $('#permiso_acceso').val(); 
    console.log('Must be unchecked '+valor);//It works 
    $('#permiso_acceso').attr('checked',false); 
} 

http://jsfiddle.net/Zhrt3/

尝试切换可变permiso_acceso为1和0

其工作

+0

有条件的运作良好。日志消息是正确的。我的问题是.attr()的方法,曾经使用.prop()都像魅力一样工作 – FranQ