Jump to content

scarec

Members
  • Content Count

    2
  • Joined

  • Last visited

  1. scarec

    ciclo su options select

    Mi potresti fare un esempio di for loop per aspettare che si riceva la risposta dal server? Grazie.
  2. Chiedo aiuto per questo problema: ho due select create dinamicamente. Quando seleziono il valore dalla selectA i valori nella selectB cambiano (il tutto con ajax e php). Se seleziono con il mouse il valore del selectA i valori di selectB cambiano correttamente. A volte ho bisogno di far fare questa operazione in automatico, senza che la faccia l'utente. Ho creato uno script js che funziona in parte. Frammento di codice modifybar.js: var n=document.getElementById("user_category"); var m=document.getElementById("type_barrier"); var y=0; var found=false; while (!found){ y=y+1; n.selectedIndex=y; loadList('type_barrier',getSelected(n)); alert("ciao"); for (x=1; x<m.length; x++){ m.selectedIndex=x; if (m.value==vc){ found=true; break; } } } La funzione loadList e': var xmlHttp = getXmlHttpObject(); function loadList(tb, id){ xmlHttp.open('GET', 'request.php?table='+tb+'&id='+id, true); xmlHttp.onreadystatechange = stateChanged; xmlHttp.send(null); } function addOption(select, value, text) { var option = document.createElement("option"); option.value = value+'§'+text, option.text = text; try { select.add(option, null); } catch(e) { // For Internet Explorer select.add(option); } } function getSelected(select) { // Return <option> value selected return select.options[select.selectedIndex].value; } function stateChanged() { if(xmlHttp.readyState == 4) { // State OK if (xmlHttp.status == 200) { var resp = xmlHttp.responseText; if(resp) { // Couple of value into answer string are separated from ; var values = resp.split(';'); // First element is list ID var listId = values.shift(); var select = document.getElementById(listId); select.disabled=false; // Delete old values while (select.options.length) { select.remove(0); } if(listId == 'user_category') { addOption (select, 0, '-- Select user --'); } else { addOption (select, 0, '-- Select barrier --'); } var limit = values.length; for(i=0; i < limit; i++) { var pair = values[i].split('|'); addOption(select, pair[0], pair[1]); } } } else { alert(xmlHttp.responseText); } } } function getXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; } I miei problemi sono 2: PROBLEMA1: se da modifybar.js lascio alert("ciao") lo script funziona. Siccome l'alert non lo vorrei (era stato messo in fase di debug per verificarne il comportamento) l'ho tolto ma lo script mi cicla su tutti i valori delle due select e per ogni voce di selectA mi lancia due alert vuoti. PROBLEMA2: loadList ho dovuto richiamarla a mano perche' con il ciclo di modifybar.js l'evento onchange nella selectA che richiama loadList non va. Attendo con fiducia! Un saluto da un nuovo utente.
×