Я использую PHP, Smarty и jQuery для своего сайта. В шаблоне smarty у меня есть несколько флажков, над которыми я работаю. Для вашей справки ниже приведен фрагмент кода смарт-кода относительно флажков.Как правильно настроить флажок в следующем сценарии?
<table cellpadding="5" cellspacing="0" border="0" id="groups_listing" style="{if $data.show_group=='on'}display:{else}display:none;{/if}">
<tr>
{if $all_groups}
{assign var='i' value=0}
{foreach from=$all_groups item="group"}
{if $i%4 == 0}</tr><tr>{/if}
<td valign="top" align="left" width="200">
<table cellpadding="5" cellspacing="0" border="0">
<tr>
<td>
<input type="checkbox" name="parent_groups[]" id="{$group.parent_id}" id="{$group.parent_id}" onchange="check_subgroups(this.id, 'class_{$group.parent_id}');" value="{$group.parent_id}" {foreach from=$user_groups item=user_grp} {if $user_grp== $group.parent_id} checked="checked" {/if}{/foreach}>
<label><strong>{$group.parent_name} </strong></label>
<input type="hidden" name="main_groups[]" id="main_groups[]" value="{$group.parent_id}">
</td>
</tr>
{foreach from=$group.subgroups item=subgroup}
<tr>
<td>
<input type="checkbox" name="groups_{$group.parent_id}[]" class="class_{$group.parent_id}" onchange="uncheck_main_group('{$group.parent_id}'); return false;" value="{$subgroup.group_id}" style="margin-left:20px;" {foreach from=$user_groups item=user_grp} {$user_grp} {if $user_grp==$subgroup.group_id} checked="checked" {/if}{/foreach}> <label>{$subgroup.group_name}</label>
</td>
</tr>
{/foreach}
</table>
{assign var='i' value=$i+1}
{/foreach}
{/if}
</td>
</tr>
</table>
The яваскрипт функция заключается в следующем:
function show_groups(check_box_id)
{
if ($(check_box_id).is(':checked')) {
$('#groups_listing').show();
} else {
$('#groups_listing').hide();
}
}
function check_subgroups(parent_id, class_name) {
var chk = document.getElementById(parent_id).checked;
if(chk == true)
$('.'+jQuery.trim(class_name)).attr('checked', true);
else
$('.'+jQuery.trim(class_name)).attr('checked', false);
}
Первый Javascript функция с именем show_groups() работает отлично, noissue с этим. Моя проблема связана со второй функцией: check_subgroups(). Он также отлично работает вначале после загрузки страницы, но позже, если я сниму и снова проведу родительский флажок, он не работает. Также, когда я проверяю все дочерние флажки на один буг, тогда ожидается, что родительский дочерний ящик должен автоматически получить флажок и наоборот. Это не работает в текущей ситуации. Можете ли вы помочь мне в достижении этой функциональности. Для вашей справки я прикрепляю снимок экрана с этим вопросом. Вы можете увидеть здесь, в вопросе, который я проверил все дочерние флажки под родителем Курс, но флажок parent не получает проверку автоматически. Заранее спасибо.
[Использовать опору] (http://api.jquery.com/prop/) вместо attr при манипулировании проверенным состоянием. Ссылка объясняет больше. Это, конечно, не может быть корнем вашей проблемы. – Ross