如何在PHP检查复选框时调用jQuery函数?

时间:2013-06-25 04:52:31

标签: php jquery checkbox

这是我的PHP代码:

<?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" checked="checked" onclick="checkbox_click(this);" />
<?php } else { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" onclick="checkbox_click(this);" />
<?php } ?>

jQuery的:

function checkbox_click(current) {
  if($(current).is(':checked')) {
          // do stuff....
  } else {
          // do stuff....
  }
}

在上面的代码中,当$mod['display']为真时,复选框被选中但它不会调用checkbox_click()函数。我尝试onchange=代替onclick=,但似乎没有任何效果。我需要在字段中保留onclickonchange

3 个答案:

答案 0 :(得分:1)

尝试使用prop功能, 此外,您不需要调用函数,您可以使用jquery.on()函数创建它,如

$(function(){
   $(document).on('click','.display_checkbox',function(){
      if($(this).prop('checked')) {
              // do stuff....
      } else {
              // do stuff....
      }
   });
});

然后从onclick="checkbox_click(this);"

中删除html checkbox element

<强>更新

document ready

上初始化它
$(function(){
   $('.display_checkbox').each(function(){
      if($(this).prop('checked')) {
              // do stuff....
      } else {
              // do stuff....
      }
   });
});

阅读on()prop()

答案 1 :(得分:0)

如果您希望在页面加载后执行函数,并且每次更改复选框状态时也要执行此操作,您应该这样做:

<?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" checked="checked" onclick="checkbox_click(this);" />
<?php } else { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" onclick="checkbox_click(this);" />
<?php } ?>

并在剧本中:

function checkbox_click(current) {
  if($(current).is(':checked')) {
          // do stuff....
  } else {
          // do stuff....
  }
}

$(function(){
   $('.display_checkbox').each(function(){
      checkbox_click($(this));
   });
});

另外,我不这样做。在这种情况下,您应该使用onchange事件绑定。

我认为最佳解决方案是:

<input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" <?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>checked="checked"<?php } ?> />

和javascript应该是这样的:

$(function(){
   $('.display_checkbox').change(function(){
      if($(this).is(':checked')) {
          // do stuff....
      } else {
          // do stuff....
      }
   });

   $('.display_checkbox').each(function(){
      $(this).change();
   });
});

答案 2 :(得分:0)

试试这个:

<?php if (isset($mod['display']) && ($mod['display'] == "1")) { ?>
    <input class="display_checkbox selectedcheckbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" checked="checked" onclick="checkbox_click(this);" />
<?php } else { ?>
    <input class="display_checkbox" type="checkbox" name="chk[<?php echo $row; ?>][display]" value="1" onclick="checkbox_click(this);" />
<?php } ?>

jQuery的:

$(document).ready(function(){
   var obj = $(".selectedcheckbox");
   var found = obj.length;
   if(found == 1)
   {
     checkbox_click(obj);
   }
});

function checkbox_click(current) {
  if($(current).is(':checked')) {
      // do stuff....
  } else {
      // do stuff....
  }
}