2017-03-01 1 views
0

Ich habe eine Dropbox (mit dem jQuery Autocomplete-Widget), die mit einem AJAX-Aufruf in eine PHP-Datei namens filter items.php gefüllt wird. Ich möchte in der Lage sein, zu verfolgen, welche Elemente der Benutzer ausgewählt hat, so dass, wenn sie zu einer anderen Seite gehen würden, ihre Auswahlen beibehalten werden, wenn sie zurückkehren.Prop ('selected', true) Funktioniert nicht zur Vorauswahl des Dropdown-Listenelements

Ich versuche dies zu erreichen, indem ich eine Tabelle bevölkere, die die ID des Artikels vorübergehend enthält, während sie ihre Auswahl treffen. Wenn sie zu der Seite zurückkehren, wird ein weiterer AJAX-Aufruf an eine PHP-Datei mit dem Namen "check basket.php" erfolgen, die die Liste der aktuell ausgewählten Objekte zurückgibt. Es wird dann Elemente aus beiden Listen vergleichen, da es die Dropdown-Liste generiert, wenn es eine Übereinstimmung gibt, die ich prop('selected', true) hinzufüge, aber es scheint nicht zu funktionieren?

Hier ist der Code:

//Check for items in Basket 
$.ajax({ 
    url: "check basket.php", 
    dataType: "json", 
    success: function(datas) { 
    var s = 0; 
    var cbox = []; 
    var itemid = []; 
    var quant = []; 
    $.each(datas, function(index, selected) { 
     while (selected.cbox[s]) { 
     cbox[s] = selected.cbox[s]; 
     itemid[s] = selected.item_id[s]; 
     quant[s] = selected.quant[s]; 
     s++; 
     } 
    }) 

    //BUILD LIST 
    $.ajax({ 
     url: "filter items.php?type=0", 
     dataType: "json", 
     success: function(data) { 
     $.each(data, function(index, publisher) { 
      for (r = 1; r < 21; r++) { 
      j = 1; 
      while (publisher.item[j]) { 
       for (sc = 0; sc < cbox.length; sc++) //Compare items in basket to pre-select 
       { 
       if (r == cbox[sc] && publisher.item_id[j] == itemid[sc]) { 
        alert(publisher.item[j] + " is in Basket for cbox " + cbox[sc] + " and J is " + j); 
        $('#' + r + 'combobox').append($('<option>', { 
        value: publisher.item_id[j] 
        }).text(publisher.item[j]).prop('selected', true)); 
       } else 
        $('#' + r + 'combobox').append($('<option>', { 
        value: publisher.item_id[j] 
        }).text(publisher.item[j])); 
       j++; 
       } 
      } 
      } 
     }) 
     } 
    }); 
    } 
}); 

Antwort

0

ich realisiert habe, was ich hier falsch gemacht habe, Prop (‚ausgewählt‘, true), das funktioniert gut nur, dass der eigentliche Inhalt der Liste nicht war generiert, bevor der Jquery-Code zur automatischen Vervollständigung seine Aufgabe erfüllt hat. Ich habe die Einstellung der AJAX-Funktionen geändert, die die Liste asynchron erzeugen, und das hat den Trick gemacht!

Verwandte Themen