18. maj 2010 - 07:58
Der er
10 kommentarer og 1 løsning
scriptaculous: autocomplete på flere forskellige inputs
Hejsa. Jeg prøver og lave noget autocomplete med scriptaculous. Det jeg har er et felt (ip$x hvor $x er en "linietæller"). Står den alene (uden $x) kan jeg godt få det til at fungere, men jeg har en "tilføj linie" knap hvor der tilføjes linie til en <div> hvor der også skal være en autocomplete.. og så taber jeg lidt span her.. [code] -> Der ikke helt virker. function getCustomerData(element, entry) { return $('cust_id').getValue(); } function eventDateCallback(element, entry) { cust_id = getCustomerData(element, entry); alert(entry + '?q=' + $('assetInterfaceID'+x+'IP').getValue() + '&counter='+x+'&c_id='+cust_id); return entry + '?q=' + $('assetInterfaceID'+x+'IP').getValue() + '&counter='+x+'&c_id='+cust_id; } function ajax_autocomplete(x) { new Ajax.Autocompleter('assetInterfaceID'+ x + 'IP', 'autocomplete_choices'+x,'printiphint.php', { fullSearch: true, frequency: 0, minChars: 1, callback: eventDateCallback } ); } kaldes: <input type=text name='aI[$x][ip]' id='aIID".$x."IP' onfocus='ajax_autocomplete(".$x.");' value='".long2ip($i_a[$x]["i_ip_s"])."'> <div id='autocomplete_choices".$x."' class='autocomplete'></div> [/code] Så egentlig - pr. linie en ny autocomplete.. dynamisk isat.
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
ok, det var vist ikke lige det jeg regnede med i koden ;-) Sorry..
prøv at sæt rundt pre tags rundt om koden, i stedet for code tags
<pre> function getCustomerData(element, entry) { return $('cust_id').getValue(); } function eventDateCallback(element, entry) { cust_id = getCustomerData(element, entry); alert(entry + '?q=' + $('assetInterfaceID'+x+'IP').getValue() + '&counter='+x+'&c_id='+cust_id); return entry + '?q=' + $('assetInterfaceID'+x+'IP').getValue() + '&counter='+x+'&c_id='+cust_id; } function ajax_autocomplete(x) { new Ajax.Autocompleter('assetInterfaceID'+ x + 'IP', 'autocomplete_choices'+x,'printiphint.php', { fullSearch: true, frequency: 0, minChars: 1, callback: eventDateCallback } ); } <input type=text name='aI[$x][ip]' id='aIID".$x."IP' onfocus='ajax_autocomplete(".$x.");' value='".long2ip($i_a[$x]["i_ip_s"])."'> <div id='autocomplete_choices".$x."' class='autocomplete'></div> </pre>
hvis det er JS er det: id='aIID'+$x+"' altså + for at streng concatinere
måske man skal gøre noget ala: <pre> onFocus="java script: var options = { script: function (q, cust_id) { return ('printiphint.php?q='+q+'&c_id=´+cust_id); }, callback: function (obj) { $('cust_id').getValue(); } }; var xml=new AutoComplete('assetInterfaceID$xIP',options);return true;" value="" /> </pre> eller sådan noget.. ved ikke lige hvordan jeg skal hive data ud fra 'formen' vedr. cust_id (hidden felt)
har du ikke et link til det, det er lidt svært at se hvad der egentligt sker uden at debugge.
Hmm.. det lader til at mit største problem (efter at have fidlet lidt med det..) er at jeg ikke kan få en div til at makke ret... s*tan osse... Den gider tydeligvis ikke at jeg indsætter en div i en tbody - og derfor ikke viser den korrekt..
ja den skal ind i en celle -> i en række. /J
tror jeg har fundet problemet.. Jeg laver en: <pre> function add_interface_line(counter, customerid, assetid) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { var newdiv = document.createElement('div'); newdiv.innerHTML = xmlhttp.responseText; var container = document.getElementById('newinterface'); container.appendChild(newdiv); } } xmlhttp.open('GET','printnewinterface.php?q='+counter+'&c_id='+customerid+'&a_id='+assetid,true); xmlhttp.send(); } </pre> hvor printnewinterface.php bl.a. smider: <pre> <script type='text/javascript' language='javascript'> function eventDateCallback(element, entry) { alert (entry + '&q=' + $('assetInterfaceID_".$x."_IP').getValue() + '&counter=".$x."&c_id=".$customer_id."'); return entry + '&q=' + $('assetInterfaceID_".$x."_IP').getValue() + '&counter=".$x."&c_id=".$customer_id."'; } new Ajax.Autocompleter( 'assetInterfaceID_".$x."_IP', 'autocomplete_choices','printiphint.php', { fullSearch: true, frequency: 0, minChars: 1, callback: eventDateCallback } ); </script> </pre> ind i eksisterende kode.. og det er meget godt altsammen.. men den får jo ikke lavet en event på ajax.autocompleter dimsen.. hvordan så det?!?!?!?!
Løst.. Aktiver script med tæller efter indsættelse af skidtet i divén... <pre> function add_interface_line(counter, customerid, assetid) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { var newdiv = document.createElement('div'); newdiv.innerHTML = xmlhttp.responseText; var container = document.getElementById('newinterface'); container.appendChild(newdiv); new Ajax.Autocompleter ( 'assetInterfaceID_'+counter+'_IP', 'autocomplete_choices','printiphint.php', { fullSearch: true, frequency: 0, minChars: 1, callback: eventDateCallback } ) } } xmlhttp.open('GET','printnewinterface.php?q='+counter+'&c_id='+customerid+'&a_id='+assetid,true); xmlhttp.send(); } </pre>
Vi tilbyder markedets bedste kurser inden for webudvikling