Momenteel gebruik ik de autocomplete bij input fields van de klasse "product_name_selector" en heb het volgende probleem. Wanneer ik een item selecteer uit de lijst worden de producten ingevuld in de eerstvolgende tabel na het input field.
Nu wanneer ik 3 inputfields onder elkaar heb staan (dynamisch) dan worden de producten 3 maal ingevuld in de tabel, ik heb al wat debugging gedaan en de functie result wordt inderdaad 3 maal opgeroepen zonder dit eigenlijk zou mogen.
Hieronder vind je de code, het probleem is dat we geen andere naam aan de klasses kunnen geven zoals xx_1, xx_2, ...
Nu wanneer ik 3 inputfields onder elkaar heb staan (dynamisch) dan worden de producten 3 maal ingevuld in de tabel, ik heb al wat debugging gedaan en de functie result wordt inderdaad 3 maal opgeroepen zonder dit eigenlijk zou mogen.
Hieronder vind je de code, het probleem is dat we geen andere naam aan de klasses kunnen geven zoals xx_1, xx_2, ...
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| function autoCompleteProducts() { $('.product_name_selector').each( function() { $( this ).autocomplete( '/admin/products.js', { matchContains : 1, max : 100 }) .result( function( event, data, formated ) { var id = $( this ).attr( 'id' ); $( '#hiddenIDbox' ).append( data[1] ); autoCompletePurchaseItems(id); } ); } ); $("dl table:last[class=purchase_product]").hide(); } function autoCompletePurchaseItems(id) { var product_id = $("#hiddenIDbox").html(); /* DELETE ALL THE ITEMS IN THE LIST FIRST */ $("input[id="+id+"]+dl table:first tbody").find("tr").remove(); // ADD items of that product $.getJSON("/admin/inventory_items.json?product_id="+product_id, function(data){ $.each(data, function(i, item) { $("input[id="+id+"]+dl table:first tbody").append('<tr><td>'+item+'</td><td>0</td></tr>'); }); }); $("input[id="+id+"]+dl table:first").fadeIn('fast'); $("#hiddenIDbox").html(""); // clear the hiddenIDbox } |