Ciao a tutti raga,
vorrei premettere che non so quanto sia esplicativo il titolo e soprattutto che sono novello di javaScript
.
Il problema è che devo creare DINAMICAMENTE UNA TABELLA ed ogni riga ha un menu a tendina (semplice, con valore SI/NO) con associato un campo INPUT (testo) nell' altra colonna.
Inizialmente, il menu a tendina ha valore NO, quindi il campo di testo è disabilitato.
Il mio problema è che ogni riga che aggiungo (quindi per ogni menu a tendina/campo di testo) devo associare l' evento onChange che, utilizando una function, mi attiva/disattiva il campo di testo a seconda del valore SI o NO del menu (spero di essere stato chiaro
).
Cioé:
*appena creo la nuova riga con le due colonne, di default ho il menu a NO e il campo di testo DISABILITATO
*Se il menu a tendina va a SI, il campo di testo viene ABILITATO
*Se il menu a tendina ritorna a NO, il campo di testo viene DISABILITATO
*Se riporto il menu su SI, il campo mi si riattiva e cosi via...
Il mio problema è che non so come prendere il nome di un oggetto da funzione. Vi posto il codice e l'errore per farvi capire meglio.
codice:
...
// i è il contatore delle righe della tabella che uso per dare nomi univoci
var numeroTelefono = document.createElement("INPUT");
numeroTelefono.setAttribute("name","telefono_"+i);
numeroTelefono.setAttribute("size",13);
numeroTelefono.setAttribute("maxLength",10);
numeroTelefono.setAttribute("disabled", true);
numeroTelefono.style.background = '#CCCCCC';
var SimABordo = document.createElement("SELECT");
var temp = "sim_a_bordo_"+i;
SimABordo.setAttribute("name", temp);
temp = "id_select_"+i;
SimABordo.setAttribute("id", temp);
// inserisco le OPTION in SimABordo
SimABordo.options[0] = new Option('No', 'no');
SimABordo.options[1] = new Option('Si', 'si');
// associo all' onchange della SELECT la funzione setInput()
SimABordo.onchange = function () { setInput(numeroTelefono, this.value); };
// dove this.value mi tiene traccia del SI/NO del menu. L' ho testato e funziona correttamente.
// Il problema penso sia numeroTelefono
...
// la funzione setInput è (che nel codice ho dichiatato prima della roba sopra):
function setInput(nomeCampoTelefono, value){
if(value == "si"){
document.frm_list.nomeCampoTelefono.name.disabled=false;
document.frm_list.nomeCampoTelefono.name.style.background="#FFFFFF";
document.frm_list.nomeCampoTelefono.name.style.color="#000000";
} else {
document.frm_list.nomeCampoTelefono.name.disabled=true;
document.frm_list.nomeCampoTelefono.name.style.background="#CCCCCC";
document.frm_list.nomeCampoTelefono.name.style.color="#000000";
document.frm_list.nomeCampoTelefono.name.value="";
}
} // end setInput
Le righe e colonne, sono create senza problemi, quando però cambio il valore del menu a tendina ricevo il seguente errore:
codice:
'document.frm_list.nomeCampoTelefono.name' è nullo o non è un oggetto
La domanda quindi è: come passo l'oggetto alla funzione?
Ho provato anche con le () ma niente:
codice:
document.frm_list.(nomeCampoTelefono.name).disabled=false;
Come sempre un grazie a tutti