Newsgroup: it.comp.lang.javascript
Titolo: Urgente: aiuto per realizzare una convalida lato client

Per favore, ho bisogno urgente di una mano perché devo convalidare dei dati
lato client e non so nulla di javascript.
Purtroppo non ho tempo di cercare troppo a fondo, quindi posto qui la mia
richiesta e spero che, mentre mi darň da fare per provare lo stesso,
qualcuno mi aiuti.
Ho un form in una pagina in cui ho messo due radiobutton, id="optContactYes"
e id="optContactNo", con cui l'utente puň indicare se vuole essere
contattato per email oppure no. Di default č selezionato "No" e la casella
di testo id="txtEmail" č disabilitata.
Ho bisogno di due cose: se l'utente seleziona "Sě" deve venire abilitata la
casella di testo. Se ci ripensa e seleziona no deve comparire una messagebox
con cui gli chiedo "Sei sicuro?" e, in base alla sua risposta, comportarsi
di conseguenza (disabilitare la casella di testo se conferma, abilitarla e
selezionare l'altro radiobutton nell'altro caso)
Un controllo analogo devo farlo quando viene premuto Invia. Abbozzo il
simil-codice che dovrebbe essere eseguito alla pressione di Invia:
if optContactNo.Checked==True {
    bool risultato; //definisco la var risultato di tipo boolean
    risultato = messagebox ("Sei sicuro?" Sě, No); //messagebox č l'alert;
la risposta dell'utente viene salvata in risultato
    if risultato==true { //l'utente ha cliccato su Sě => non vuole essere
contattato
        optContactNo.Checked = true; //lascio segnato optContactNo
    else {
        optContactYes.Checked = false; }
    }
}
Oltre a questo, solo se l'utente ha selezionato il radiobutton "Sě", devo
controllare che la casella di testo non sia vuota.
Per favore, mentre ci provo da solo, qualcuno puň aiutarmi? E' urgentissimo.
Grazie e ciao.
Alex
-- 
...dipende...
Il dipolo sul tetto del vicino č sempre piů potente

 selezionare l'altro radiobutton nell'altro caso)
Questo è il primo pezzo
<script>
function contr(chk) {
 if(
chk.name
 =='optContactYes' ) {
  optContactNo.checked = false;
  txtEmail.disabled=false;
 } else {
  if (confirm('Sei Sicuro??') == true) {
   optContactYes.checked = false;
   optContactNo.checked = true;
   txtEmail.disabled=true;
  }
 }
}
</script>
<input type=radio name=optContactYes onMouseDown="contr(this)">YES
 <input type=radio name=optContactNo onMouseDown="contr(this)" checked>NO
<br><br>
<input type="text" name="txtEmail" disabled value="email">
Spero ti sia utile. Ora devo andare. Dopo vedo se posso fare il resto.


Ti ringrazio, mi hai dato uno spunto utilissimo. Sono riuscito a creare una
pagina html e questo codice funziona (uso l'attributo id anziché name):
<script language="JavaScript" type="text/javascript">
<!--
function contr(chk) {
 if(
chk.id
 =='optContactYes' ) {
  document.forms('Form1').optContactNo.checked = false;
  document.forms('Form1').txtEmail.disabled=false;
 } else {
  if (confirm('Sei Sicuro??') == true) {
   document.forms('Form1').optContactYes.checked = false;
   document.forms('Form1').optContactNo.checked = true;
   document.forms('Form1').txtEmail.disabled=true;
  }
 }
}
//-->
</script>
[...]
<form id="Form1" name="Form1" action="">
<input type="text" name="txtEmail" disabled value="email">
<input type="radio" id="optContactYes" name="" checked="false"
onMouseDown="contr(this)"/>Yes
<input type="radio" id="optContactNo" name="" checked="true"
onMouseDown="contr(this)">No
<input type="submit" id="cmdOK" name="cmdOK" onclick="" />
</form>
Devo lavorare, però, su una pagina 
ASP.NET
, e quindi utilizzo due
asp:radiobutton. Il problema, però, è che i miei due oggetti asp:radiobutton
non espongono il metodo onMouseDown.
<asp:radiobutton id="optContactYes" runat="server" Text="Sì"
GroupName="contattami"></asp:radiobutton>
<asp:radiobutton id="optContactNo" runat="server" Text="No" Checked="True"
GroupName="contattami"></asp:radiobutton>
Aggiungendo l'attributo da codice,
optContactYes.Attributes.Add("onMouseDown", "contr(this)") e analogamente
per optContactNo, viene creato un tag <span onMouseDown="contr(this)">  che
però non passa correttamente i valori. Ho provato a fargli passare anche
direttamente l'id (modificando la function), ma niente.
Idee? (Ma possibile che i casini vengano fuori sempre quando si ha fretta?)
Grazie.

 direttamente l'id (modificando la function), ma niente.
Ho usato OnMouseDown perchč onClick  mi cambia prima il check e poi mi
chiede la conferma.
L'ho modificato un po' per permettere l'onClick al posto dell'onMouseDown.
Ho aggiunto qualche return.
<script>
function contr(chk) {
 if(
chk.name
 =='optContactYes' ) {
  optContactNo.checked = false;
  txtEmail.disabled=false;
  return true
 } else {
  if (confirm('Sei Sicuro??') == true) {
   optContactYes.checked = false;
   optContactNo.checked = true;
   txtEmail.disabled=true;
   return true;
  } else {
   return false;
  }
 }
}
</script>
<input type=radio name=optContactYes onClick="return contr(this)">YES
<input type=radio name=optContactNo onClick=" return contr(this)" checked>NO
<br><br>
<input type="text" name="txtEmail" disabled value="email">
Comunque io non so niente dell'
asp.net
, quindi non ti posso essere d'aiuto
in questo.


Nel frattempo ho risolto, gli ho fatto "digerire" l'onMouseDown. Per il
fatto di non essermi stato d'aiuto con l'
ASP.NET
, be', non è vero, mi hai
aiutato eccome. Inoltre avevo notato la finezza dell'onMouseDown piuttosto
che l'onClick, complimenti!
Grazie ancora.
Ciao!