Originariamente inviato da Enzaccio
Quanto alla bozza di codice di "didoproject", attenzione che non sono ammessi spazi vuoti o altri caratteri invalidi nel nominare le funzioni:
function Controllo select() {
Conservo la via del
document.getElementsByTagName("nome_elemento") presa da Andrea, che ci consente di individuare gli Elementi SELECT a prescindere dal loro NAME che verrà valorizzato dinamicamente.
Faccio il caso di due SELECT, che supponiamo ASP ha provveduto a nominare e popolare, e partirei da questo modellino completo ma non definitivo; il gruppo di alert dopo lo puoi togliere o commentare ogni riga con doppia slash // :
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>SELECT 's checker</title>
<script type="text/javascript">
function VerificaNum(){
var sel = document.getElementsByTagName("select"); //elabora una collection (array) di Elementi
alert("esistono " + sel.length + " SELECT nel Documento");
alert("dalla prima: " + sel[0].value);
alert("dalla seconda: " + sel[1].options[sel[1].selectedIndex].value);
if(sel[0].value == sel[1].value){
alert('Rimangono attualmente selezionati due valori uguali.\nProcedere ad una diversa selezione, prego.');
document.forms[0].elements["submit_btn"].disabled = "disabled";
} else {
document.forms[0].elements["submit_btn"].disabled = "";
};
}
</script>
</head><body>
<form name="main" action="" method="">
<div align="center">
<select name="first" onchange="VerificaNum();">
<option value="2">2</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="3">3</option>
</select>
<select name="second" onchange="VerificaNum();">
<option value="2">2</option>
<option value="3" selected>3</option>
<option value="2">2</option>
<option value="1">1</option>
<option value="3">3</option>
</select>
<hr>
<input value="invia" type="submit" name="submit_btn">
</div>
</form>
</body></html>
Come prima miglioria, bisognerà prevedere la circostanza che si presentino
già in partenza due Valori uguali (default option), e l' utente procede all' invio senza operare alcuna selezione.
La chiamata alla funzione è difatti demandata al gestore d' evento ONCHANGE ma se l' utente non cambia nulla, neanche la verifica parte.
Sentiremo dal poster: se questa eventualità diviene già scartatabile in partenza per qualche propizia ragione di popolamento dati, allora il modello è praticamente finito così.
Altrimenti, una prima strada prevede di includere come OPTION di default, una del tipo:
<option value="">- seleziona -</option>
e partire con un pulsante di SUBMIT normalmente disabilitato:
<input value="invia" type="submit" name="submit_btn" disabled="disabled">
e qualche altra cosetta; tanto da obbligare l' utente alla selezione, all' onchange quindi.
Una seconda via, convertirebbe l'
<input type="submit"> in
type="button"> demandando l' invio del FORM a JavaScript.
Alla fine di tutto il discorso, vorrei valutare anche il caso dell' utente che avesse JavaScript disabilitato sul Browser (coi Netscape / FireFox è possibile): in tal caso, il controllo non parte mentre l'
<input type="submit"> resta capace di inviare valori indesiderati.
Non so se la ricezione di valori uguali può comportare grossi problemi. Poi ne discutiamo meglio.