jQuery onclick bug复选框

时间:2013-01-12 09:06:52

标签: javascript jquery checkbox

我有一张表格:

<form name="registration_form" action="<?php echo base_url();?>user/register" method="post" onsubmit="return verify()">
   <table width="100%" border="0" cellspacing="1" cellpadding="2">
   <tr>
       <td class="login_user_td">Click If Want To Edit :</td>
       <td><input type="checkbox" name="edit" id="edit" onclick="enable_edit()"/>
       </td>
     </tr>
     <tr>
       <td class="login_user_td"> First Name :</td>
       <td><input type="text" name="f_name" readonly="true" id="f_name" value="<?php echo $my_info[0]['first_name'];?>">
       </td>
     </tr>
     <tr>
       <td colspan="2" align="center" class="login_user_button"><input type="image" style="display: none;"src="<?php echo base_url();?>assets/front_assets/image/edit.gif" /></td>
     </tr>

   </table>
   </form>

现在复选框编辑有一个调用函数

的onclick事件
enable_edit()
{
        if($('#edit').prop("checked", true))
             {
                 alert('true');
             }
        else
                 alert('false');
    }

问题是,每当我点击复选框时,它总是显示为真。

假如我第一次点击,属性被检查,那么它将提醒真实,下次当我再次点击时,这次检查应该取消选中,因此应警告错误。

但每次警报都是真的,而且复选框没有被取消选中。

3 个答案:

答案 0 :(得分:2)

您始终设置已检查状态而不是查询状态。

在条件检查中使用prop("checked")代替prop("checked", true),因为后者始终将checked州属性设置为true

有关获取和设置属性值的详细信息,请参阅.prop() documentation

将您的代码更改为以下内容:

function enable_edit() {
  if ($('#edit').prop("checked")) {
    alert('true');
  } else alert('false');
}

DEMO - 工作复选框


答案 1 :(得分:2)

您正在if语句中将checked属性的值设置为true。

您需要的只是$('#edit').prop("checked");

答案 2 :(得分:1)

if($('#edit').prop("checked") {

}

可能是一个更好的测试。