2013-10-27 24 views
6

Opencart filtrelere sayfanın dışına gizlenen gönder düğmesini değiştirmek için onclick olayı eklemek istiyorum. Bunun javascript/jquery ile yapılması gerektiğini farzediyorum. ama uygulama benim için biraz ötesinde, yardımcı olabilir misiniz?Opencart Filtreler, onclick olayını insert button ile değiştir

PHP:

<div class="box"> 
<div class="box-heading"><?php echo $heading_title; ?></div> 
<div class="box-content"> 
    <ul class="box-filter"> 
    <?php foreach ($filter_groups as $filter_group) { ?> 
    <li><span id="filter-group<?php echo $filter_group['filter_group_id']; ?>"><?php echo $filter_group['name']; ?></span> 
    <ul> 
    <?php foreach ($filter_group['filter'] as $filter) { ?> 
    <?php if (in_array($filter['filter_id'], $filter_category)) { ?> 
    <li> 
     <input type="checkbox" value="<?php echo $filter['filter_id']; ?>" class="click_checkbox_manufacturers-filter" id="filter<?php echo $filter['filter_id']; ?>" checked="checked" /> 
     <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label> 
    </li> 
    <?php } else { ?> 
    <li> 
     <input type="checkbox" value="<?php echo $filter['filter_id']; ?>" class="click_checkbox_manufacturers-filter" id="filter<?php echo $filter['filter_id']; ?>" /> 
     <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label> 
    </li> 
    <?php } ?> 
    <?php } ?> 
    </ul> 
    </li> 
    <?php } ?> 
    </ul> 
    <a id="button-filter" class="button"><?php echo $button_filter; ?></a> 
</div> 
</div> 

HTML ÇIKIŞI:

<div class="box"> 
<div class="box-heading">Refine Search</div> 
<div class="box-content"> 
    <ul class="box-filter"> 
    <li><span id="filter-group2">Colour</span> 
    <ul> 
    <li> 
    <input type="checkbox" value="33" class="click_checkbox_manufacturers-filter" id="filter33"> 
    <label for="filter33">Black</label> 
    </li> 
    <li> 
    <input type="checkbox" value="35" class="click_checkbox_manufacturers-filter" id="filter35"> 
    <label for="filter35">Blue</label> 
    </li> 
    <li><span id="filter-group4">Scent Name</span> 
    <ul> 
    <li> 
     <input type="checkbox" value="64" class="click_checkbox_manufacturers-filter" id="filter64"> 
     <label for="filter64">Almond</label> 
    </li> 
    <li> 
     <input type="checkbox" value="65" class="click_checkbox_manufacturers-filter" id="filter65"> 
     <label for="filter65">Coconut</label> 
    </li> 
    </ul> 
    </li> 
    </ul> 
    <a id="button-filter" class="button">Refine Search</a> 
</div> 
</div> 

JavaScript Böyle bir şey (yapabileceği

<script type="text/javascript"> 
$('#button-filter').bind('click', function() { 
    filter = []; 

    $('.box-filter input[type=\'checkbox\']:checked').each(function(element) { 
     filter.push(this.value); 
    }); 

    location = '<?php echo $action; ?>&filter=' + filter.join(','); 
}); 
//--></script> 

cevap

4

yerine) geçerli senaryonun: Burada

<script type="text/javascript"> 
$(document).ready(function() { 
    // hide the "submit" button 
    $('#button-filter').hide(); 

    // bind onChange event to the checkboxes 
    $('.click_checkbox_manufacturers-filter').live('change', function() { 
     filter = []; 

     $('.box-filter input[type=\'checkbox\']:checked').each(function(element) { 
      filter.push(this.value); 
     }); 

     window.location = '<?php echo $action; ?>&filter=' + filter.join(','); 
    }); 
}); 
//--></script> 

şaşırtıcı çalışan çok aynı JS kodunun ait link to my JsFiddle olduğunu. Tek sorun, yönlendirme ile olabilir ... Yukarıdaki yönlendirme kodunu düzenledim, bu yüzden de çalışması gerekiyor.

+0

Çalışmıyor gibi görünüyor mu? Yapar? – Stuart

+0

@Stuart Kötü, 'live' işlevini kaçırıyordum. Şimdi deneyin ... – shadyyx

+0

Yardımınız için teşekkürler Shadyx, ama işe yaramıyor ... düğmeyi gizler! – Stuart

1

Sürüm 2 için, filter.tpl dosyasındaki JavaScript'i değiştirin (katalogdan/görünüm/tema/varsayılan/şablon/uzantı/modül/filter.tpl - gerekiyorsa tema adınızı 'varsayılan' olarak değiştirin) bu

için

OC 2.3.0.2'de test edilmiştir.