Newsgroup: it.comp.lang.javascript
Titolo: Controllo esistenza campo o select

Ciao a tutti.
Voglio validare un form che puoi avere un campo select o un campo input a
seconda della pagina da cui si arriva.
Come posso in uno script verificare se esiste il campo select (o se esiste
il campo input è la stessa cosa) in modo da escludere un controllo che mi
darebbe errore altrimenti?
Grazie mille
Posto i controlli come sono adesso, per verificare che ci sia un valore.
Io realtà vorrei creare una if che mi dica quale fare dei due
//Controllo sulla select
if
(document.getElementById("nomefile").options[document.getElementById("nomefi
le").selectedIndex].text == "...")
   {
  //resto del codice
   }
//Controllo sul campo input
if (document.getElementById("nomefile").value == "")
   {
  //resto del codice
   }

 if (document.getElementById("nomefile").value == "")
Beh, se il codice è esattamente questo (e non vi sono altre distinzioni da
farsi dentro le graffe) puoi usare
if(document.getElementById("nomefile").value=="") sia per text che per
select (basta che, oltre a text nullo, metti anche il value nullo, come
immagino sia già).
Escludi in questo modo netscape4, ma tanto lo stai già escludendo usando
getElementById.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 darebbe errore altrimenti?
Intendi dire escludere il controllo nel caso non esista il campo, corretto?
Nel tuo caso e' abbastanza semplice:
var obj=document.getElementById("nomefile"),
	sText="";
if (obj!=null){
 
	if (typeof obj.options!="undefined"){
		/* si presume sia una select */
		sText=obj.options[obj.selectedIndex].text;
	}else if (typeof obj.value!="undefined"){
		sText=obj.value;
	}
	/* fai qualcosa con "sText" */
}else{
	/* non esiste */
}
-- 
ZER0
~ The Tangent Universe collapsed 5972 days, 10 hours, 35 minutes and 43 seconds ago.
on air ~ "U2 - Sunday, Bloody Sunday"

 select 
No, non puo': lui vuole recuperare il testo della option selezionata, non
il suo valore.
Solo nel caso in cui il valore sia uguale al testo, potrebbe usare un
codice del genere. Ma dato che il codice postato non chiarisce questo
punto, e' preferibile recuperare il testo della option.
-- 
ZER0
~ The Tangent Universe collapsed 5972 days, 10 hours, 37 minutes and 38 seconds ago.


 il suo valore.
Ops, ho letto male (la text ha valore "", ho dedotto che anche la select
aveva scritta nulla (ha scritto "...", invece).
Secondo me però quel ... sta per "", ossia per value nullo...ma sto
deducendo in effetti, non è esattamente quello che ha chiesto.
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 deducendo in effetti, non è esattamente quello che ha chiesto.
Ah, ho capito cosa intendi dire.
Beh, direi che tra me e te abbiamo comunque coperto le possibili
casistiche. Sia che necessiti di discriminare i due controlli, sia che
debba recuperare il testo della option selezionata, o semplicemente il
value sia della text che della select.
-- 
ZER0
~ The Tangent Universe collapsed 5972 days, 10 hours, 54 minutes and 9 seconds ago.
on air ~ "Gianluca Grignani - Che ne sarà di noi"

Ho trovato... era più semplice del previsto.
Sul librone McGrawHill c'è tutto!
Bastava controllare il tipo di campo con il metodo .type
posto il codice
if (document.getElementById("nomefile").type="select") {
        if
(document.getElementById("nomefile").options[document.getElementById("nomefi
le").selectedIndex].text !="")
             {
                // resto
             }
 }
 else {
      if (document.getElementById("nomefile").value !="")
             {
                //resto
            }
}

 if (document.getElementById("nomefile").type="select") {
==, non =


 posto il codice
Scusa, ma cio' che sta nel "resto" poi e' il medesimo codice?
Perche' in quel caso e' ridondante.
Inoltre, ti conviene salvare il riferimento all'oggetto come mostrato nel
codice postato, soprattutto se devi recuperare il text di una select e non
il value.
-- 
ZER0://coder.gfxer.web-designer/
~ "Nei film americani, qualsiasi problema che venga considerato
sufficientemente catastrofico, puo' essere risolto facendo esplodere uno
o piu' ordigni nucleari" (ZER0 & Cosimo)


Si in effetti i controllo era ==

 o l'input fossero diversi da ""?
Se nel caso in cui la select ha il testo della option uguale "", ha anche
il value di tale option uguale a ""; puoi utilizzare il codice che ti ha
scritto in precedenza Cristiano.
Mi spiego meglio. Se tu imposti la select nel seguente modo:
<select id="nomefile">
	<option value=""></option>
	<option value="file.txt">file.txt</option>
	<option value="file2.txt">file2.txt</option>
</select>
Ti bastera' accedere alla proprieta' value dell'oggetto nomefile, per
ottenere cio' che ti serve:
alert(document.getElementById("nomefile").value);
Questo codice funzionera' in entrambi i casi: Sia che nomefile sia una
select, sia che nomefile sia un campo di testo. Nel caso della select,
ottieni il valore impostato nell'attributo value della option selezionata.
if (document.getElementById("nomefile").value!=""){
	// resto
}
-- 
ZER0
~ The Tangent Universe collapsed 5973 days, 3 hours, 21 minutes and 26 seconds ago.
on air ~ "Autopilot Off - Make A Sound"