Blocco inserimento valori con script attiva/disattiva oggetti form

pierhagi

Nuovo Utente
18 Feb 2013
5
0
1
Ciao

ho un modulo inserimento dati in db, fatto in asp classico, che funziona correttamente.
A questo modulo ho aggiunto uno script attiva/disattiva oggetti form, che disattiva di default oggetti come textbox o select option. Per utilizzare questi oggetti bisogna cliccare sulla input radio corrispondente x attivare l'oggetto interessato e utilizzarlo, as es.:

se devo inviare un valore da una select, clicco sulla "sua" input radio x abilitare la select, seleziono il valore dalla select e clicco sul tasto invia x inviare il valore.

Ora avendo inserito questo script nella mia pagina asp non riesce a recuperare il valore e passarglielo alla variabile.

Questa è la mia select:
Codice:
<input id="radio" name="dOption" value="id_contenuti" onClick="chMd()" type="radio">
<select name="id_contenuti" id="id_contenuti" class="select-triplo-dx" onChange="check_valore('id_contenuti', 'id_contenuti');" disabled="disabled">

Questo è lo script:

Codice:
<script>
//INIZIO FUNZIONE ABILITA/DISABILITA OGGETTI FORM
 function chMd()
 {	 
  // initialize form with empty field
  document.forms[0].link_esterno.disabled=false;
  document.forms[0].link_esterno.value="";

  for(var i=0;i<document.forms[0].elements.length;i++)
  {
    if(document.forms[0].elements[i].name=="dOption")
    {//	No Constraints: Nessun vincolo
     if(document.forms[0].elements[i].value=="A")
     {
       if(document.forms[0].elements[i].checked==true){

        document.forms[0].link_esterno.disabled=true;

		document.forms[0].id_contenuti.disabled=true;
		document.forms[0].id_super_categoria.disabled=true;
		document.forms[0].id_categoria.disabled=true;
		document.forms[0].id_sotto_categoria.disabled=true;

       }
     }
     else if(document.forms[0].elements[i].value=="B")
     {//Textbox: link_esterno
       if(document.forms[0].elements[i].checked==true){
        document.forms[0].link_esterno.disabled=false;

	    document.forms[0].id_contenuti.disabled=true;
	    document.forms[0].id_super_categoria.disabled=true;
	    document.forms[0].id_categoria.disabled=true;
	    document.forms[0].id_sotto_categoria.disabled=true;

       }
     }
     else if(document.forms[0].elements[i].value=="id_contenuti")
     {//Select: id_contenuti
       if(document.forms[0].elements[i].checked==true){
        document.forms[0].link_esterno.disabled=true;

		document.forms[0].id_contenuti.disabled=false;
		document.forms[0].id_super_categoria.disabled=true;
		document.forms[0].id_categoria.disabled=true;
		document.forms[0].id_sotto_categoria.disabled=true;

       }
     } 
	 
    }
  }
 }
//FINE FUNZIONE ABILITA/DISABILITA OGGETTI FORM
</script>

L'errore che ottengo è questo:

Codice:
Microsoft VBScript runtime error '800a0009'

Subscript out of range: '[number: 0]'

l'errore indica che non riesco a passare i valori che recupero dalla select, in tutto recupero dalla select 6 valori, per poi passarli alla mia funzione split.

...cmq il tutto funziona perfettamente senza la funzione attiva/disattiva oggetti form....quindi non passa una variabile...credo!

Potete aiutarmi?

Pier
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, ho provato a simulare il tuo form anche se non ho capito bene come è strutturato
i value delle option li passa correttamente, forse il tuo problema è nella funzione check_valore() che non hai postato
ho fatto questa prova
HTML:
<form>
    <input type="button" name="id_categoria" value="id categoria"/>
    <input type="button" name="id_sotto_categoria" value="id sotto categoria"/>
    <input type="button" name="id_super_categoria" value="super categoria"/>
    <input type="text" name="link_esterno" value=""/>
    <input id="radio" name="dOption" value="id_contenuti" onClick="chMd()" type="radio">
    <select name="id_contenuti" id="id_contenuti" class="select-triplo-dx" onChange="check_valore('id_contenuti', 'id_contenuti');" disabled="disabled">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select>
</form>
<script>
    function check_valore(x,y) {
        var select = document.getElementById(x);
        var valore = select.options[select.selectedIndex].value
        alert(valore);
    }
    //INIZIO FUNZIONE ABILITA/DISABILITA OGGETTI FORM
    function chMd()
    {	 
        // initialize form with empty field
        document.forms[0].link_esterno.disabled=false;
        document.forms[0].link_esterno.value="";

        for(var i=0;i<document.forms[0].elements.length;i++)
        {
            if(document.forms[0].elements[i].name=="dOption")
            {//	No Constraints: Nessun vincolo
                if(document.forms[0].elements[i].value=="A")
                {
                    if(document.forms[0].elements[i].checked==true){

                        document.forms[0].link_esterno.disabled=true;

                        document.forms[0].id_contenuti.disabled=true;
                        document.forms[0].id_super_categoria.disabled=true;
                        document.forms[0].id_categoria.disabled=true;
                        document.forms[0].id_sotto_categoria.disabled=true;

                    }
                }
                else if(document.forms[0].elements[i].value=="B")
                {//Textbox: link_esterno
                    if(document.forms[0].elements[i].checked==true){
                        document.forms[0].link_esterno.disabled=false;

                        document.forms[0].id_contenuti.disabled=true;
                        document.forms[0].id_super_categoria.disabled=true;
                        document.forms[0].id_categoria.disabled=true;
                        document.forms[0].id_sotto_categoria.disabled=true;

                    }
                }
                else if(document.forms[0].elements[i].value=="id_contenuti")
                {//Select: id_contenuti
                    if(document.forms[0].elements[i].checked==true){
                        document.forms[0].link_esterno.disabled=true;

                        document.forms[0].id_contenuti.disabled=false;
                        document.forms[0].id_super_categoria.disabled=true;
                        document.forms[0].id_categoria.disabled=true;
                        document.forms[0].id_sotto_categoria.disabled=true;

                    }
                } 
	 
            }
        }
    }
    //FINE FUNZIONE ABILITA/DISABILITA OGGETTI FORM
</script>
 

pierhagi

Nuovo Utente
18 Feb 2013
5
0
1
Ciao

scusa se ti rispondo solo ora!

Il codice che mi hai passato funziona! L'errore che facevo non c'entrava con javascript ma con asp... non avevo scritto correttamente un controllo "if" in asp.

Ti chiedo ancora una modifica che completerebbe il modulo. Nel codice javascript che ho postato, obbligo la compilazione, in un form, di una textbox o della select cliccando sulle rispettive radio button...se clicco su una x forza disattivo l'altra!

Ora, se erroneamente, l'utente, prima abilita la textbox e scrive il valore e poi ci ripensa, quindi abilita e seleziona il valore nella select, nella textbox rimane il valore scritto in precedenza e se prova ad inviare i dati, crea un errore.

Ti chiedo se puoi aiutarmi ad aggiungere il codice che cancellerebbe i valore sia dalla textbox o viceversa dalla select, al momento che si clicca sulla radio button. Ora ho modificato ulteriormente il form arrivando ad inserire 4 select e un campo testo. Mi servirebbe che, ogni qualvolta si clicchi su una qualsiasi radio button x abilitare uno dei 5 oggetti del form, le precedenti selezioni o inserimenti di questi oggetti fossero cancellati, visualizzando il form "lindo" con i "campi" puliti da ogni valore... come se fosse stata appena richiamata la pagina che visualizza il form!
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
nell'esempio che ti ho postato spuntando la check elimini l'eventuale contenuto dell input text con questa istruzione
Codice:
document.forms[0].link_esterno.value="";
ti basta pertanto inserirla ogni lvolta che hai bisogno di ripulire i campi
invece per reimpostare la option delle select puoi provare cosi
Codice:
document.forms[0].nome_select.selectedIndex = 0; // o il value che ha di default
 

pierhagi

Nuovo Utente
18 Feb 2013
5
0
1
Ciao

il tuo codice funziona!

L'ho inserito così nelle select:
Codice:
                else if(document.forms[0].elements[i].value=="id_contenuti")
                {//Select: id_contenuti
[COLOR="#FF0000"]document.forms[0].id_contenuti.selectedIndex = 0;[/COLOR] // o il value che ha di default.
													     //Pulisco la textbox in caso di selezione di una radio.
                    if(document.forms[0].elements[i].checked==true){
                        document.forms[0].link_esterno.disabled=true;
						document.forms[0].id_lingua.disabled=true;

                        document.forms[0].id_contenuti.disabled=false;
                        document.forms[0].id_super_categoria.disabled=true;
                        document.forms[0].id_categoria.disabled=true;
                        document.forms[0].id_sotto_categoria.disabled=true;
                    }
                }

Invece in link_esterno ho usato il codice contemporaneamente sia x una textbox che select:

Codice:
                else if(document.forms[0].elements[i].value=="B")
                {//Textbox: link_esterno + Select: id_lingua
					[COLOR="#FF0000"]document.forms[0].link_esterno.value="";[/COLOR]//Pulisco la textbox in caso di selezione di una radio.
					[COLOR="#FF0000"]document.forms[0].id_lingua.selectedIndex = 0;[/COLOR] // o il value che ha di default.
																	  //Pulisco la textbox in caso di selezione di una radio.
                    if(document.forms[0].elements[i].checked==true){
                        document.forms[0].link_esterno.disabled=false;
						document.forms[0].id_lingua.disabled=false;
						
                        document.forms[0].id_contenuti.disabled=true;
                        document.forms[0].id_super_categoria.disabled=true;
                        document.forms[0].id_categoria.disabled=true;
                        document.forms[0].id_sotto_categoria.disabled=true;
                    }
                }


Sai x caso xchè in IE il menù delle select si apre solo x un istante senza dar la possibilità di selezionare il valore?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
a me non lo fa, posta la select o un link per vedere
 
Discussioni simili
Autore Titolo Forum Risposte Data
T Inserimento adsense in un blocco per mkportal Google AdSense 3
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
V Blocco inviti a gruppo facebook Social Media Marketing 0
seranto Blocco preventivo e Registro dei Consensi per Cookie tecnici? Leggi, Normative e Fisco 2
C Aggiungere blocco dati Javascript 6
B Problema Instagram: Blocco Account Discussioni Varie 0
O cookie e blocco preventivo Leggi, Normative e Fisco 0
P [MySQL] Blocco utenze MySQL 0
M [PHP] blocco tor PHP 7
giancarlob Prova a rimandare o a caricare in modo asincrono le risorse di blocco SEO e Posizionamento 0
trattorino [Javascript] Blocco div in base all'altezza Javascript 1
trattorino [PHP] blocco codice su una piattaforma PHP 3
A [PHP] Blocco mail spam con regex PHP 2
O [PHP] Cookie law e blocco preventivo PHP 21
Fuego2806 [HTML] "Blocco Note" HTML e CSS 9
A Blocco note privato Leggi, Normative e Fisco 0
F Strani referrers: cosa sono? Come li blocco? HTML e CSS 7
felino Computer Desktop: blocco continuo...problema scheda video? Hardware 3
S Blocco script Javascript 8
S Access 2007 blocco visualizza riquadro MS Access 0
S Blocco campo per condizione vera MS Access 4
Elisacau Blocco aggiornamento pagine WordPress 1
D Assegnazione blocco statico a specifica categoria Magento 0
S zencart 151 - blocco checkout min0 unit 0 CMS (Content Management System) 0
H Problema blocco div in rilievo jQuery 3
dvdscr Blocco database a seguito della pubblicazione di un post sulla webapp MySQL 3
L Blocco pagine dirette PHP 13
M [Vendo] Blocco 2 siti web premium Compravendita siti e domini 0
A impostare la posizione iniziale di un blocco Javascript 0
T Eludere blocco popup Javascript 0
M Blocco Antispam Su form PHP 6
A Blocco Pc durante video Hardware 1
C Non mi si vede un blocco HTML e CSS 2
S query database e blocco utente PHP 0
L Blocco if | Condizione sul colore Javascript 0
D Menu con Stato Corrente e Blocco Link PHP 2
M [Firewall] Kaspersky 2010: rimuovere blocco applicazione Sicurezza e Virus 2
T Problema blocco popup con Internet Explorer Windows e Software 3
A sbloccare blocco active x Webdesign e Grafica 0
A Internet Explorer e blocco Javascript Javascript 0
A html - problema blocco note su vista HTML e CSS 3
T problema di blocco del sistema Windows e Software 17
C [VENDO] 1 Blocco di 10 Articoli Informatica Offerte e Richieste di Lavoro e/o Collaborazione 1
M [HTML/JAVASCRIPT] Problema Blocco Menù HTML e CSS 0
A Blocco php in Ajax Ajax 1
M blocco controllo activex Javascript 3
A Blocco IP Classic ASP 20
N Svendita domini in blocco Compravendita siti e domini 3
D Catturare Un Blocco Di Testo Da Un'altra Pagina PHP 2
O C++ Array di struct e blocco struct unione C/C++ 0

Discussioni simili