[GELÖST]Listing aktualisiert sich nicht beim wenn input ist unchecked

Hallo Zusammen,

ich bin am verzweifeln… Und bitte um abhilfe!

Es geht um die Produkt-Filter im Produktlisting, diese aktualisieren das Listing nur beim checked-Status und nicht beim unchecked-Status (Filter sind immer aktiv):

   Type
      
      
         
         
            
            
             
            Filter 283
         
         
      
      
   


$('.filter-panel--option input').change(function () {
  if($(this).attr('checked') != "checked") {
     $('.' + $(this).attr('name')).prop("checked", $(this).prop('checked'));
     $('#filter').submit();
  } else {
     $('.' + $(this).removeAttr('checked'));
     $('#filter').submit();
  }
});

Das checken eines Filters klappt einwandfrei, die Form wird submitted und die URL refreshed:

develop.net/standard?p=1&o=1&n=15f=283

Will ich diesen Filter wieder unchecken, wird die Form nicht mehr submitted, die URL nicht refreshed und meine Filter bleiben ausgewählt!

develop.net/standard?p=1&o=1&n=15f=283

Hat jemand eine Idee?

Feuert denn der .change() überhaupt? 

Und ich hab den Code bei mir nicht gefunden, nutzt du da nicht die Funktion, die Shopware schon von Haus aus mitbringt, um Filter direkt nachzuladen (unter Einstellungen – Caches / Performance – Einstellungen – Allgemein – Filter)?

Gruß

Matt

1 „Gefällt mir“

Werden die Filter nach dem submit ebenfalls neu geladen? Dann müssen natürlich alle listener neu gesetzt werden.

Viele Grüße
https://www.digitvision.de

1 „Gefällt mir“

@msslovi0 schrieb:

Feuert denn der .change() überhaupt? 

Und ich hab den Code bei mir nicht gefunden, nutzt du da nicht die Funktion, die Shopware schon von Haus aus mitbringt, um Filter direkt nachzuladen (unter Einstellungen – Caches / Performance – Einstellungen – Allgemein – Filter)?

Gruß

Matt

Gehe ich mal von aus, wenn ich

submit

weg lasse, passiert rein garnichts.

 

Ich habe .change() in .click() geändert, leider auch ohne erfolg

Geht nicht um den ersten. Geht um den zweiten. Siehe dazu auch die Anmerkungen von Eike. 

Gruss 

Matt

1 „Gefällt mir“

@msslovi0 schrieb:

Geht nicht um den ersten. Geht um den zweiten. Siehe dazu auch die Anmerkungen von Eike. 

Gruss 

Matt

Ich weiß nicht genau wie ich das anstellen soll, habe aus der jquery.listing-actions.js nun folgendes gebaut:

        $('.filter-panel--option input').click(function () {
        if($(this).is(':checked') ) {
            $('.' + $(this).attr('name')).prop("checked", $(this).prop('checked'));
            $('#filter').submit();
            $.publish('plugin/swListingActions/onActionSubmit', [me, event]);
        } else {
            $('.' + $(this).removeAttr('checked'));
            $.publish('plugin/swListingActions/onActionSubmit', [me, event]);
            $('#filter').submit();
        }
        });

 

Viel einfacher

$('.filter-panel--option input').change(function () {
  console.log('changed')
  if($(this).is(':checked') ) {
    $('.' + $(this).attr('name')).prop("checked", $(this).prop('checked'));
    $('#filter').submit();
  } else {
    $('.' + $(this).removeAttr('checked'));
    $('#filter').submit();
  }
});

Aber gibt es einen Grund, warum du das nicht über das eingebaute Feature löst oder, wenn das aus Gründen nicht geht, das als Plugin über den Statemanager löst?

Gruß

Matt

1 „Gefällt mir“

@msslovi0 schrieb:

Viel einfacher

$(‚.filter-panel–option input‘).change(function () {
console.log(‚changed‘)
if($(this).is(‚:checked‘) ) {
$(‚.‘ + $(this).attr(‚name‘)).prop(„checked“, $(this).prop(‚checked‘));
$(‚#filter‘).submit();
} else {
$(‚.‘ + $(this).removeAttr(‚checked‘));
$(‚#filter‘).submit();
}
});

Aber gibt es einen Grund, warum du das nicht über das eingebaute Feature löst oder, wenn das aus Gründen nicht geht, das als Plugin über den Statemanager löst?

Gruß

Matt

Vielen herzlichen Dank für deine schnelle Rückmeldung und Unterstützung! Es funktioniert nun einwandfrei!

Genau genommen gibt es dafür keinen Grund …