2017-12-20 7 views
0

Ich habe einen Preisschieberegler und möchte den Inhalt neu laden, wenn der Benutzer den Preisschieberegler ändert. Allerdings, wenn das Ereignis ausgelöst wird und die Last-Funktion wirksam wird, bekomme ich Fehler folgendeJQuery Slider Ereignis- und Ladefunktion ändern

TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement. 

Hier ist mein Code

$(".range-filter").on('slidechange', function(){ 

    var formdata = $("#filterList").serializeObject(); 
    var attrfilter = $("#filterList").find('input[name^=attrfilter]:checked'); 
    alert("yey"); 

    $("#productList").load(
     url, 
     { 
      formdata: formdata, 
      attrfilter: attrfilter 
     }, 
     function(responseText, statusText, xhr){ 
      if(statusText == "success") 
       return; 
      if(statusText == "error") 
       return; 
     } 
    ); 
}); 

Warum das macht Konflikte? Soll ich stattdessen die normale Ajax-Funktion verwenden?

+0

Können Sie bitte einen Plunkr erstellen? –

Antwort

0

Log und attrfliter um zu sehen, ob es sich um gültige Werte handelt, die im Objekt (2. Parameter in Ladefunktion) als Daten des Ajax-Aufrufs gesendet werden können.

var attrfilter = $("#filterList").find('input[name^=attrfilter]:checked'); 

Ich glaube, die obige Zeile schafft das Problem. Das attrfilter wird das jQuery-DOM-Elementobjekt und NICHT true oder false sein, von dem Sie annehmen, dass Sie Daten für Ajax-Aufruf übergeben möchten.

Was können Sie tun, ist:

var attrfilter = $("#filterList").find('input[name^=attrfilter]').prop("checked") 
// will return true or false 

Auch verweisen:

TypeError: stepUp called on an object that does not implement interface HTMLInputElement

TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement

0

Ja ich vergessen habe, die Werte wie folgt zuzuordnen:

 attrfilter = $.map(attrfilter, function(element) 
    { 
     var start = element.name.indexOf('[')+1; 
     var end = element.name.indexOf(']'); 
     return {id: element.name.substring(start, end), value: element.value}; 
    });