2013-10-27 2 views
6

Ich möchte hinzufügen, ein Onclick-Ereignis zu den OpenCart-Filtern, um die Schaltfläche zum Senden zu ersetzen, die von der Seite ausgeblendet ist. Ich nehme an, dass dies mit Javascript/jquery getan werden soll , aber die Implementierung ist ein wenig jenseits von mir, können Sie helfen?Opencart Filter hinzufügen onclick-Ereignis, um die Schaltfläche zum Senden zu ersetzen

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-Ausgabe:

<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

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

Antwort

4

Sie können etwas tun (anstelle des aktuellen Skripts):

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

Hier ist link to my JsFiddle der gleichen JS-Code, der überraschend ist arbeiten. Das einzige Problem kann mit Redirect sein ... Ich habe den Redirect-Code oben bearbeitet, so dass es auch funktionieren sollte.

+0

Scheint nicht zu funktionieren? Macht es? – Stuart

+0

@Stuart Mein Schlechter, mir fehlte die 'Live'-Funktion. Versuchen Sie es jetzt ... – shadyyx

+0

Danke für Ihre Hilfe Shadyx, aber es funktioniert nicht .. versteckt den Knopf obwohl! – Stuart

1

Für Version 2 ändern Sie das JavaScript in der Datei filter.tpl (aus catalog/view/theme/default/template/extension/module/filter.tpl - ändern Sie 'Default' zu Ihrem Theme-Namen, falls erforderlich) zu diesem

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

     $('input[name^=\'filter\']').on('change', function() { 
      filter = []; 

      $('input[name^=\'filter\']:checked').each(function(element) { 
       filter.push(this.value); 
     }); 

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

Getestet in OC 2.3.0.2.