2013-06-25 54 views
2

这是我的PHP代码:如何通过PHP检查复选框时调用jQuery函数?

<?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

回答

1

尝试使用prop功能对于这一点, 你也不必调用功能,您可以通过使用jquery.on()之类的函数创建它,

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

,然后从html checkbox element

删除 onclick="checkbox_click(this);"

更新

初始化它在document ready

$(function(){ 
    $('.display_checkbox').each(function(){ 
     if($(this).prop('checked')) { 
       // do stuff.... 
     } else { 
       // do stuff.... 
     } 
    }); 
}); 

阅读​​和prop()

+0

不,它仍然不适合我的目的。它和我原来的功能一样。当复选框被PHP检查时,它不会调用该函数。它只在手动点击复选框时调用该函数。 – user1448031

+0

@ user1448031现在查看我更新的答案。 –

+0

对PHP选择似乎没有任何影响。 – user1448031

0

如果你想页面加载后要执行的功能,并且还可以axecuted每次复选框状态改变时,你应该这样来做:

<?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(); 
    }); 
}); 
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.... 
    } 
} 
相关问题