Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839

    Nome form in una variabile?

    Ciao a tutti...

    vi spiego, ho questa funzione:

    function cerca()
    {
    IdReg=document.Form1.IdRe.options[document.NomeForm.IdRe.selectedIndex].value
    ....}

    che richiamo con:

    <select name="IdReg" id="IdReg" onChange="cerca();">


    Siccome questa funzione la vorrei riutilizzare per altri form nello stesso sito, vorrei che il nome del form (in questo caso 'form1'), fosse passato come variabile dall' OnChange.

    Ho provato così:

    function cerca(NomeForm)
    {
    IdReg=document.NomeForm.IdRe.options[document.NomeForm.IdRe.selectedIndex].value
    ....}

    che richiamo con:

    <select name="IdReg" id="IdReg" onChange="cerca('registrazione');">


    però mi da errore, mi dice che 'IdReg è vuoto o non è un oggetto'.

    Come si può fare secondo voi?
    Sicut Nox Silentes

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    <select ... onchange="cerca(this)">

    function cerca(obj) {
    // obj e' l'oggetto che richiama la funzione
    idreg = obj.options[obj.selectedIndex].value;
    ...

    Se poi ti serve il form:

    mioForm = obj.form;
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Grazie br1: funziona!

    Ho però un altro problema con queste funzioni.

    Questo è il codice completo:

    codice:
    
    var ricerca_pro;
    
    function cerca(NomeForm) 
    {
    /*var valorecampo = document.form1.regione.options[document.form1.regione.selectedIndex].value;*/
    var valorecampo = NomeForm.options[NomeForm.selectedIndex].value;
     
    // per l'oggetto nativo XMLHttpRequest 
    if (window.XMLHttpRequest) {
    ricerca_pro = new XMLHttpRequest();
    ricerca_pro.onreadystatechange = ricevi(NomeForm) ;
    ricerca_pro.open("GET", "regioni_province_comuni.asp?reg="+valorecampo,true);
    ricerca_pro.send(null);
    // per IE 
    } else if (window.ActiveXObject) {
    ricerca_pro = new ActiveXObject("Microsoft.XMLHTTP");
    if (ricerca_pro) {
    ricerca_pro.onreadystatechange = ricevi(NomeForm) ;
    ricerca_pro.open("GET", "regioni_province_comuni.asp?reg="+valorecampo,true);
    ricerca_pro.send();
    }
    }
    }
    
    function ricevi(NomeForm) { 
    var strRes; 
    var arrValori; 
    if (ricerca_pro.readyState == 4) { 
    strRes=ricerca_pro.responseText;
    arrValori=strRes.split("|");
    /*document.form1.citta.options.length=0; */
    NomeForm.citta.options.length=0;
    for(i=0;i<arrValori.length;i++)
    {
    NomeForm.citta.options[NomeForm.citta.options.length]= new Option(arrValori[i].split("|")); 
    }
    }
    }

    Praticamente, la funzione "cerca(NomeForm)" richiama la funzione "ricevi()" e pure in questa ci devo passare il parametro "NomeForm", ma inserendolo come ho fatto io non funziona... Hai percaso un idea sul dafarsi?
    Sicut Nox Silentes

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Una stringa, quale appunto il contenuto della variabile NomeForm) per il solo fatto di avere quel particolare valore non diviene automaticamente un oggetto da manipolare... a seconda dei casi devi utilizzarlo per creare un riferimento all'oggetto reale.

    Nel caso dei form avremo quindi:

    document.forms[NomeForm]

    ... e non e' un'idea, e' la sintassi del javascript per l'accesso al DOM reperibile in un qualunque manuale
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Ciao br

    Ho provato come dici (credo...):
    -----------
    function ricevi(NomeForm) {
    var strRes;
    var arrValori;
    if (ricerca_pro.readyState == 4) {
    strRes=ricerca_pro.responseText;
    arrValori=strRes.split("|");
    /*document.form1.citta.options.length=0; */
    document.forms.[NomeForm].citta.options.length=0;

    for(i=0;i<arrValori.length;i++)
    {
    document.forms.[NomeForm].citta.options[document.forms.[NomeForm].citta.options.length]= new Option(arrValori[i].split("|"));
    }
    }
    }

    -----------

    Mi dice però che "si aspettava un identificatore".
    Sicut Nox Silentes

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Io il punto prima della parentesi quadra non l'ho messo
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Originariamente inviato da br1
    Io il punto prima della parentesi quadra non l'ho messo

    Opssss errore mio!!!

    Ora, all'Onchange, mi dice invece: che "non è implementato" in questa riga della prima funzione:
    ricerca_pro.onreadystatechange = ricevi(NomeForm);

    Ma è un manicomio!
    Sicut Nox Silentes

  8. #8
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Ragazzi ho risolto!

    Ora, però mi chiedo come si passi come variabile il Nome del campo.

    Ho provato così:

    function cerca(NomeForm,Campo)
    {
    if (Campo != "") {alert(NomeForm+" - "+Campo);}


    var valorecampo = document.forms[NomeForm].[Campo].options[document.forms[NomeForm].[Campo].selectedIndex].value;

    ....

    e... Campo (nell'alert) viene passato correttamente dall'OnChange, il problema è che non viene letto correttamente in "valorecampo".

    Mi potete dare una mano?
    Sicut Nox Silentes

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    var valorecampo = document.forms[NomeForm].elements[Campo].options[document.forms[NomeForm].elements[Campo].selectedIndex].value;
    Domanda ma una guida/libro sul javascript l'hai letto?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Originariamente inviato da cavicchiandrea
    var valorecampo = document.forms[NomeForm].elements[Campo].options[document.forms[NomeForm].elements[Campo].selectedIndex].value;
    Avevo già provato e mi dice che non si può ottenere il valore della proprietà 'options' : l'oggetto è nullo oppure non è definito.


    Domanda ma una guida/libro sul javascript l'hai letto?
    E certo... ma ci sono cose che mi confondono.
    Sicut Nox Silentes

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.