2017-04-10 106 views
-2

我必须验证复选框。Javascript + jquery复选框验证?

if($("#update_user_modal #room1").attr('checked', false)) room1Val = 0; 

这工作正常。但我必须检查它是否也没有检查。其他方法不会工作。

if($("#update_user_modal #room1").attr('checked', true)) room1Val = 1; 

这也行得通。

但是!当我使用这样的两个:

if ($("#update_user_modal #room1").attr('checked', false)) room1Val = 0; 

    if($("#update_user_modal #room1").attr('checked', true)) room1Val = 1; 

它有时只是有效。

我试过.prop也。 我在做什么错?

回答

0

你是不是属性值,但它。不要使用第二个参数attr - 只使用一个:

room1Val = +$("#update_user_modal #room1").attr('checked')) 

这将做两例一气呵成,因为它返回一个布尔值。该+,使一个0或1

其次,它是更好地使用propattr这种情况:

room1Val = +$("#update_user_modal #room1").prop('checked')) 
+0

请问downvoter解释的问题是什么? – trincot

+1

你的回答比他们的更好;) –

+0

谢谢!像魅力一样工作.. –

1

JQuery的:使用​​

if ($("#update_user_modal #room1").is(':checked') room1Val = 0; 
else room1Val = 1; 

的Javascript:使用.checked属性的复选框。

if document.getElementById('chkboxName').checked room1Val = 0; 
else room1Val = 1; 
1

尝试使用is(":checked")选项。


您的代码应该是这样的:

if (!$("#update_user_modal #room1").is(":checked")) room1Val = 0; 

if($("#update_user_modal #room1").is(":checked")) room1Val = 1; 



检查documentation以获取更多信息。

-1

你应该这样做象下面这样:

if ($("#update_user_modal #room1").prop('checked')) { 
    room1Val = 1; 
} else { 
    room1Val = 0; 
} 
1

根据W3C形式规范,选中属性是 布尔属性,这意味着相应的属性为true,如果 属性出现在全部 - 即使例如属性 没有值或被设置为空字符串值或甚至“假”。这是 对所有布尔属性都是true。

尽管如此,要记住关于选中的 属性最重要的概念是它不对应于checked属性。 属性实际上对应于defaultChecked属性, 应仅用于设置复选框的初始值。 已检查的属性值不会随着 复选框的状态而变化,而检查的属性值会变化。因此, 跨浏览器兼容的方式,以确定是否被选中复选框是 使用属性:

if (elem.checked) 
if ($(elem).prop("checked")) 
if ($(elem).is(":checked")) 

Source