Ciao a tutti, ho un problema da qualche giorno e volevo sapere da voi in che maniera posso risolverlo. Il pratica io genero nella pagina jsp in java n <select> che verranno valorizzate tutte alla stessa maniera e cioè con m <option> che mi rappresentano dei campi di una tabella. Il mio problema è fare in modo che quando venga selezionato uno di questi campi in una select, lo stesso venga disabilitato nelle altre in maniera da bloccare la possibilità di associare 2 valori ad uno stesso campo. (Vi chiederete perchè questi campi non gli metti fissi e lasci associare ad ogni campo il valore? Perchè i valori vengono presi da un xml e quindi sono gia presenti nella pagina, ritengo più pratico far associare il valore al campo!) In parte ho risolto il problema riuscendo a disabilitare l'option selezionata in tutte le select, ma nel momento in cui vado a cambiare nuovamente il valore non riesco a riabilitare quel campo. Vi posto il codice funzionante in parte e quello che a mio parere potrebbe essere giusto ma non funziona. L'errore che mi da è: x has no properties alla riga 20.
Funzionante in parte:
function check(value, n) {
var temp = "";
var x;
for (var j = 0; j < n; j++) {
temp = "OBJECT_METADATA_ID"+j;
x = document.getElementById(temp);
for(var i = 0; i < x.length; i++) {
if (x.options.value == value) {
x.options.disabled=true;
} else {
x.options.disabled=false;
}
}
}
}
Non funzionante:
function check(n) {
var temp = "";
var x;
var campi_selezionati = new Array();
for (var j = 0; j < n; j++) {
temp = "OBJECT_METADATA_ID"+j;
x = document.getElementById(temp);
alert(x.selectedIndex.value);
campi_selezionati.push(x.options.selectedIndex.value);
}
for (var j = 0; j < n; j++) {
temp = "OBJECT_METADATA_ID"+j;
x = document.getElementById(temp);
for(var i = 0; i < x.length; i++) {
for (var z = 0; z < campi_selezionati.length; z++) {
if (x.options.value == campi_selezionati[z]) {
x.options.disabled=true;
} else {
x.options.disabled=false;
}
}
}
}
}
l'evento è associato all' onChange(numero di select generate) di aogniuna delle n select. Le select prendono il nome di OBJECT_METADATA_ID più il numero in progressione da 0 a n.
Penso di aver postato tutto il necessario per comprendere il problema. Ringrazio in anticipo chi mi dovesse aiutare.
Ciao
Funzionante in parte:
function check(value, n) {
var temp = "";
var x;
for (var j = 0; j < n; j++) {
temp = "OBJECT_METADATA_ID"+j;
x = document.getElementById(temp);
for(var i = 0; i < x.length; i++) {
if (x.options.value == value) {
x.options.disabled=true;
} else {
x.options.disabled=false;
}
}
}
}
Non funzionante:
function check(n) {
var temp = "";
var x;
var campi_selezionati = new Array();
for (var j = 0; j < n; j++) {
temp = "OBJECT_METADATA_ID"+j;
x = document.getElementById(temp);
alert(x.selectedIndex.value);
campi_selezionati.push(x.options.selectedIndex.value);
}
for (var j = 0; j < n; j++) {
temp = "OBJECT_METADATA_ID"+j;
x = document.getElementById(temp);
for(var i = 0; i < x.length; i++) {
for (var z = 0; z < campi_selezionati.length; z++) {
if (x.options.value == campi_selezionati[z]) {
x.options.disabled=true;
} else {
x.options.disabled=false;
}
}
}
}
}
l'evento è associato all' onChange(numero di select generate) di aogniuna delle n select. Le select prendono il nome di OBJECT_METADATA_ID più il numero in progressione da 0 a n.
Penso di aver postato tutto il necessario per comprendere il problema. Ringrazio in anticipo chi mi dovesse aiutare.
Ciao