Newsgroup: it.comp.lang.javascript
Titolo: con mozilla non funziona

Ho problema di compatibilità tra browser.
Una serie di radiobutton (tipo_domanda[])selezionano la pagina a cui punterà
il browser con l'invio del form.
Questo lo script.
function indirizza() {
 if (document.form1.tipo_domanda[0].checked==true)
  {eval("form1.action='radio.php'"); }
 if (document.form1.tipo_domanda[1].checked==true)
  {eval("form1.action='check.php'"); }
 if (document.form1.tipo_domanda[2].checked==true)
  {eval("form1.action='option.php'"); }
...etc.
}
e poi
<form action="" method="post" name="form1" onSubmit="indirizza();">
Con Opera e IE tutto ok
ma Mozilla sostiene che form1 non sia deifinto, fatto sta che non funziona,
ricaricando la stessa pagina.
Non posso rischiare che non funzioni anche con questo browser!
Consigli?
Grazie mille
Marcello
Grazie!

 Consigli?
1 -  al posto di
    eval("form1.action='radio.php'")
metti
    eval("document.form1.action='radio.php'")
2 - Mozilla e NS non ammettono che nel name di oggetto ci siano le parentesi
quadre (che sembra un elemento di un array). Quindi dovrai scrivere:
    if (document.form1.tipo_domanda0.checked==true)
e
    <input type="radio" name="tipo_domanda0" value="0">
Maurizio.

 quadre (che sembra un elemento di un array). Quindi dovrai scrivere:
ma non e' proprio un array? mi pare di capire che siano radiobutton, no?
~~
artemis.alpeia

Infatti è proprio un array.
Comunque con la specificazione di document in
eval("document.form1 ecc
funziona!
Grazie mille!
;-)
Marcello
"artemis.alpeia" <it.i...@alpeia.artemis> ha scritto nel messaggio
news:xZmG9.15179$fa.5...@news1.tin.it...


 ma non e' proprio un array? mi pare di capire che siano radiobutton, no?
Non riesco a vederlo come tale. L'attributo name di un tag č una stringa di
caratteri e non il nome di una variabile javascript (array o no). E questo č
indipendente dal fattto che vi siano dei radiobutton.
Maurizio.

 funziona!
Perché non posti il codice che hai usato? Secondo me dovresti aver definito
prima l'array nella seguente maniera:
    tipo_domanda = new Array("uno", "due", "tre");
e poi:
    if (eval('document.form1.' + tipo_domanda[0] + '.checked'))
    ...
    <input type="radio" name="uno">
Cioè i nomi dei radiobutton sono quelli definiti nell'array (uno, due, e
tre).
Se avevi fatto così, scusa, ma non lo avevo capito.
Avevo capito, invece, che avevi definito il radiobutton in questa maniera:
    <input type="radio" name="tipo_domanda[0]">
perché con IE questo funziona.
E con questo, penso, ci siamo chiariti anche con artemis.
Maurizio.

 quadre (che sembra un elemento di un array).
Non direi. Anzi direi che una interessante feature di php sta proprio in
questa possibilita'.
Se dichiari "mioCampo[]" sul client dovresti trovarti un array di "mioCampo"
lato server a disposizione.

 questa possibilita'.
Non so del php, però ho l'impressione che stiamo parlando di cose diverse.
Mi sembra di capire che php sostituisca a "mioCampo[]" i valori definiti sul
server. Se non è così, ti ringrazio in anticipo se mi fai vedere come, con
il javascript di NS e Mozilla, si riesca a fare riferimento ad un campo del
genere:
    <input type="radio" name="mioCampo[0]">
Maurizio.

Per ora non c'è php...
il codice è il seguente:
function indirizza() {
 if (document.form1.tipo_domanda[0].checked==true)
  {eval("document.form1.action='radio.php'"); }
 if (document.form1.tipo_domanda[1].checked==true)
  {eval("document.form1.action='check.php'"); }
 if (document.form1.tipo_domanda[2].checked==true)
  {eval("document.form1.action='option.php'"); }
 if (document.form1.tipo_domanda[3].checked==true)
  {eval("document.form1.action='multioption.php'"); }
 if (document.form1.tipo_domanda[4].checked==true)
  {eval("document.form1.action='libera.php'"); }
 if (document.form1.tipo_domanda[5].checked==true)
  {eval("document.form1.action='dinamica.php'"); }
  }
i radio:
<input name="radio_n" type="text" id="radio_n" size="3" maxlength="2">
<input name="tipo_domanda" type="radio"  value="radio">
  <input name="tipo_domanda" type="radio" value="check">
<input name="tipo_domanda" type="radio" value="option">
eccetera
il tag form:
<form action="" method="post" name="form1" onSubmit="indirizza();">
Così, grazie a quel document nell'eval funziona.
Per quanto riguarda il php posso delucidare, ma javascript sono più che agli
inizi...
marcello
"Maurizio." <mau...@libero.itA> ha scritto nel messaggio
news:kyqG9.43895$3l.12...@twister1.libero.it...


 <form action="" method="post" name="form1" onSubmit="indirizza();">
scusa la domanda, ma perche' metti eval? nn mi pare che usi codice
dinamico...
io scriverei
function indirizza()
{
    for (var i = 0; i < document.form1.tipo_domanda.length; i++)
       if (document.form1.tipo_domanda[i].checked)
          document.form1.action = document.form1.tipo_domanda[i].value +
'.php';
    return true; // altrimenti il form non parte
}
~~
artemis.alpeia
Ogni idea rivoluzionaria - in campo scientifico, artistico o altro - provoca
tre stadi di reazione, riassumibili nelle seguenti frasi:
1. "E' impossibile; non farmi perdere tempo".
2. "E' possibile, ma non val la pena di farlo".
3. "L'ho sempre detto, io, che era un'ottima idea".
(Legge di Clarke sulle idee rivoluzionarie)

 Così, grazie a quel document nell'eval funziona.
però l'eval mi sembra superfluo.
Maurizio.

 Andrea.
Nessuna perdita di tempo. Ho risposto a naso e a te (Marcello scusa ma non
ho proprio cagato il tuo post: cazzeggio domenicale...)
Non conosco per nulla php (e dovremmo metterci il naso tutti, comunque, per
capire) e a memoria ho "sputato". Se ho ricordato esatamente il
comportamento di cui parlavo e' stato certo pensato su basi w3c.
Semplicemente l'ho dato per scontato. Prove a venire.

 <input type="radio" name="mioCampo[0]">
Al di la' che un campo del genere in PHP non ha molto senso (ha + senso un
"mioCampo[]"), ci accedi tranquillamente in questo modo:
document.forms[0].elements["mioCampo[0]"].value
--------------------------------
Inviato via 
http://usenet.libero.it