2013-06-25 3 views
2

Вот мой PHP код:Как вызвать функцию jQuery, когда флажок установлен 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=, но это, кажется, не имеет никакого эффекта. Мне нужно сохранить onclick или onchange в поле.

ответ

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()

+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.... 
    } 
}