Newsgroup: it.comp.lang.javascript
Titolo: Migliorare codice funzionante...

Ciao,
è una parte del mio form di controllo, ma mi piacerebbe scrivere
queste poche righe senza usare "else" per far funzionare il
MEX...magari scrivendolo su una sola riga...il fatto è che ci ho
provato, ma per forza di cose devo specificare il numero di array dei
secondi CKB? Non basta un semplice:
if(obj.RicercaSopra.checked=false&&obj.RicercaX.checked=false){
...codice...
Così mi da sempre errore...
Devo per forza fare il ciclo? Oppure come sotto specificare tutta la
trafila?
Però non vorrei usare il null; e poi else.
Mi funziona sotto, ma vorrei migliorare la mia scrittura....
GRAZIE ALEN.
------------------------------------
var obj=document.selcliente2;
	// Qualche Radio va schiacciato
	if(obj.RicercaSopra.checked||obj.RicercaX(0).checked||obj.RicercaX(1).checked||obj.RicercaX(2).checked){
		null;
	}else{
		errors += '- Devi effettuare una scelta tra i Radiobutton.\n';
	}	
+++++++++++++++++++++++++++++++++++++
+ QUESTA è tutta la pagina completa +
+++++++++++++++++++++++++++++++++++++
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!-- 
//Per pulire i campi e disabilitarli quello del codice e della ragione
sociale
function disable_enable(n)
{
var obj=document.selcliente2;
//Giochiamo sui radio a lato dei campi
	if (n=="L"||n=="C"||n=="P"){
		obj.Src_COCL.value="";
		obj.Src_COCL.disabled=true;
		obj.Src_RASO.value="";
		obj.Src_RASO.disabled=true;
		obj.Src_geografica.disabled=false;
		obj.RicercaSopra.checked=false;
	}else if (n=="S"){
		obj.RicercaX(0).checked=false;
		obj.RicercaX(1).checked=false;
		obj.RicercaX(2).checked=false;
		obj.Src_COCL.disabled=false;
		obj.Src_RASO.disabled=false;
		obj.Src_geografica.disabled=true;
		obj.Src_geografica.value="";
	}
}
function controlla()
{
var obj=document.selcliente2;
	// Qualche Radio va schiacciato
	if(obj.RicercaSopra.checked||obj.RicercaX(0).checked||obj.RicercaX(1).checked||obj.RicercaX(2).checked){
		null;
	}else{
		errors += '- Devi effettuare una scelta tra i Radiobutton.\n';
	}	
	// Controllo se si seleziona il checkbox Sopra singolo
	if (obj.RicercaSopra.checked){
		if(obj.Src_RASO.value==""&&obj.Src_COCL.value==""){
			errors += '- Devi specificare almeno uno dei due campi: \"Codice
Cliente\" o \"Ragione Sociale\".\n';
		}
	}
 
	// Controlli solo se si seleziona il radiobutton Località
	// Controllo checkbox LOCALITA'
	if (obj.RicercaX(0).checked&&obj.Src_geografica.value==""){
		errors += '- Devi specificare la località.\n';
	}
 
	// Controllo checkbox CAP
	if (obj.RicercaX(1).checked&&obj.Src_geografica.value==""){
		errors += '- Devi specificare il C.A.P..\n';}
	else if (obj.RicercaX(1).checked&&obj.Src_geografica.value!=""){
		if (obj.Src_geografica.value.length != 5){
		errors += '- Il C.A.P. deve essere di 5 cifre e numerico.\n';
		}
	}
	// Controllo checkbox PROVINCIA	
	if (obj.RicercaX(2).checked&&obj.Src_geografica.value==""){
		errors += '- Devi specificare la sigla della provincia.\n';
	}else if (obj.RicercaX(2).checked&&obj.Src_geografica.value!=""){
		if (obj.Src_geografica.value.length != 2){
		errors += '- La sigla della provincia deve essere di 2 lettere.\n';
		}
	}
 
 
	//Se c'è qualche errore avvisa
	if (errors){
		alert('Il form non può essere processato:\n'+errors);
		return false;
	}
}
-->
</script>
</head>
<body>
<form name="selcliente2" action="pag_sel_cliente_2.asp" method="post"
onSubmit="return controlla(this)">
  <tr>
  <td colspan="2"><font face="Arial" color="#000080">      
    <input type="radio" name="RicercaSopra" value="radiobutton"
onClick="Javascript:disable_enable('S')">
    <br>
    Codice cliente</font></td>
  </tr><tr><td>&nbsp;</td>
		<td class="padnormal">
			<input TYPE="TEXT" NAME="Src_COCL" SIZE="8" MAXLENGTH="8" disabled>
			(Se conosci
il	codice	esatto inseriscilo qui)</td>
  </tr>
		<tr>
			<td height="24"><font face="Arial" color="#000080"><br>
		    Ragione sociale</font></td>
		<td class="padnormal">
			<input TYPE="TEXT" NAME="Src_RASO" SIZE="35" MAXLENGTH="35"
disabled>
		(La parola o lettere che compongono la ragione sociale)<br>
</td>
		</tr>
		<tr>
		  <td><font face="Arial" color="#000080">
		    <input type="radio" name="RicercaX" value="LOC"
onClick="Javascript:disable_enable('L')">
	      Localit&agrave;</font></td>
		  <td rowspan="3" class="padnormal"><font face="Arial"
color="#000080">
      <input NAME="Src_geografica" TYPE="TEXT" id="Src_geografica"
SIZE="35" MAXLENGTH="35" disabled>
(La ricerca viene effettuata solo in questo campo se
compilato)</font></td>
		</tr>
		<tr>
		  <td><font face="Arial" color="#000080">
		    <br>
		    <input name="RicercaX" type="radio" value="CAP"
onClick="Javascript:disable_enable('C')">
	      Cap<br>
		  </font></td>
	    </tr>
		<tr>
		  <td><font face="Arial" color="#000080">
		    <input type="radio" name="RicercaX" value="PRO"
onClick="Javascript:disable_enable('P')">
	      Provincia</font></td>
	    </tr>
 
		<tr>
			<td></td>
		  <td align="left">
				<input TYPE="SUBMIT" NAME="Cerca" VALUE="Cerca">
		  </td>
		</tr>
		<tr>
		  <td></td>
		  <td align="left">&nbsp;</td>
	  </tr>
 
</form>
</body>
</html>

 	}	
Ah, adesso l'ho capita :) Ma non comprendo il perche' tu abbia usato una 
cosa del genere. Bastava che tu impostassi la giusta condizione nell'IF. 
Cmq sia:
errors+=(!obj.RicercaSopra.checked && !isRadioChecked(obj.RicercaX) )?"- 
Devi effettuare una scelta tra i Radiobutton.\n":"";
Ho visto che nel codice poi chiami la funzione controlla con
onsubmit="return controlla(this)"
ma poi la funzione stessa manca di questo parametro:
function controlla()
{
var obj=document.selcliente2;
.
.
In realta' puoi quindi fare:
function controlla(obj)
eliminando l'istruzione successiva.
 
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

...

Potresti provare una soluzione forse non molto elegante:
aggiungi un radiobutton ceccato di default e controlli:
 se è ceccato, vuol dire che nessun altro è ceccato
 altrimenti è ceccato qualcos'altro
Spero che qualcuno trovi una soluzione migliore della mia, e sono
curiosissimo di conoscerla :-]

, 
b_s...@libero.it
 says...
[hyper-cuttin']
Zio castoro, il quoting..


 eliminando l'istruzione successiva.
Ancora ottimo...GRAZIE 1000 x le dritte,
ALEN

 Ancora ottimo...GRAZIE 1000 x le dritte,
De nada.
