Funzione javascript su asp:button, ma perchè non funziona?

mercoledì 09 luglio 2008 - 12.50

stuzzo Profilo | Junior Member

Salve a tutti!
Vi espongo il mio problema:
Ho una textbox che deve essere svuotata quando si preme il tasto cancella. Questa cosa deve essere gestita lato client e perchè non usare JS?
Ho provato leggendo sia il forum che le guide, ma non ancora riesco nel mio intento.
Vi espongo anche il codice:
Nel .cs
protected void Page_Load(object sender, EventArgs e)
{
cmdCancella.Attributes.Add("onClick", "return canc('id');");
}

nell'aspx
<script type="text/javascript">
function canc(id)
{
document.getElementById(txtContattaci).value="";
return true;
}
</script>

ho provato anche

protected void Page_Load(object sender, EventArgs e)
{
cmdCancella.Attributes.Add("onClick", "canc('id');");
}

nell'aspx
<script type="text/javascript">
function canc(id)
{
document.getElementById(txtContattaci).value="";
}
</script>
ma niente...
Non solo non cancella la text, ma quando viene premuto il tasto viene generato un refresh della pagina...
Mi potete consigliare?
grazie in anticipo :)

Alfredo

Rasmin Profilo | Newbie

http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.button.onclientclick(VS.80).aspx

devi usare la proprietà OnClientClick...

Nel link c'è anche un esempio.

P.S. ma se il tasto deve solo fa rquello perchè non usi un tasto html

<input type="button" onclick="canc()" value="cancella">... non è + semplice?

rossimarko Profilo | Guru

Ciao,

il refresh molto provabilmente è dovuto al fatto che è un bottone con il runat server e non blocchi l'evento lato client. Poi devi verificare il nome del controllo quando fai la getElementByID.

Ti giro un pezzo di codice di esempio da prendere come spunto:

ASPX:
<script type="text/javascript" language="javascript"> function canc(id) { document.getElementById(id).value=""; } </script> <asp:TextBox ID="txtContattaci" runat="server" /> <asp:Button ID="btnCancella" Text="Cancella" runat="server" />

.cs:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Se non ti serve avere il btnCancella runat=server allora valuta anche l'opzione di usare un semplice pulsante HTML come ha detto Rasmin

-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

paoval72 Profilo | Senior Member

Ciao, aggiungo solo la corretta sintassi per il return, come l'avevi pensata all'inizio:
Button1.Attributes.Add("OnClick", "return (Ciao('tb1'));");

Così a me funziona.


Paolo

stuzzo Profilo | Junior Member

Salve a tutti e grazie dei consigli, ma vi sembrerà strano, ma non ancora riesco a farlo funzionare....
Visto che non devo gestirlo lato server, ho optato per l'input HTML, ecco come ho fatto:

<asp:TextBox ID="txtContattaci" runat="server" Columns="50" Rows="15" TextMode="MultiLine"></asp:TextBox>

<input id="btnCancella" type="button" onclick="canc()" value="Cancella" /></td>

+ avanti:

function canc()
{
document.getElementById(txtContattaci).value="";
}

Mi dà errore il browser, dicendo che txtContattaci non è stato definito...

Che ne dite?

rossimarko Profilo | Guru

>Salve a tutti e grazie dei consigli, ma vi sembrerà strano, ma
>non ancora riesco a farlo funzionare....
>Visto che non devo gestirlo lato server, ho optato per l'input
>HTML, ecco come ho fatto:
>
><asp:TextBox ID="txtContattaci" runat="server" Columns="50"
>Rows="15" TextMode="MultiLine"></asp:TextBox>
>
><input id="btnCancella" type="button" onclick="canc()" value="Cancella"
>/></td>
>
>+ avanti:
>
> function canc()
> {
> document.getElementById(txtContattaci).value="";
> }
>
>Mi dà errore il browser, dicendo che txtContattaci non è stato
>definito...

L'errore è dovuto al fatto che la funzione accetta come parametro una stringa e che lato client txtContattaci potrebbe avere un'altro id. Prova con questo:

document.getElementById('<%=txtContattaci.ClientID%>').value="";
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

stuzzo Profilo | Junior Member


>L'errore è dovuto al fatto che la funzione accetta come parametro
>una stringa e che lato client txtContattaci potrebbe avere un'altro
>id. Prova con questo:
>
>document.getElementById('<%=txtContattaci.ClientID%>').value="";

Ciao, ho provato, ma niente..
adesso è presente questi errori:
costante String senza terminazione.

Boh?

paoval72 Profilo | Senior Member

Ciao,
hai messo gli apici all'id?
Dovrebbe essere così:

document.getElementById("txtContattaci").value


Paolo

rossimarko Profilo | Guru

>
>Ciao, ho provato, ma niente..
>adesso è presente questi errori:
>costante String senza terminazione.


L'errore ti compare all'interno del browser?

Ci mandi la riga di codice che compare nel sorgente della pagina?

Se vuoi ti giro un esempio che ho fatto per verificare il comportamento (è tutto codice aspx):

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

stuzzo Profilo | Junior Member

>Ciao,
>hai messo gli apici all'id?
>Dovrebbe essere così:
>
>document.getElementById("txtContattaci").value
>
>
>Paolo

Ciao, ho provato sia con apici singoli, che doppi, ma l'errore è sempre lo stesso:
document.getElementById() è nullo o non è un oggetto.

stuzzo Profilo | Junior Member

>>
>>Ciao, ho provato, ma niente..
>>adesso è presente questi errori:
>>costante String senza terminazione.
>
>
>L'errore ti compare all'interno del browser?
>
>Ci mandi la riga di codice che compare nel sorgente della pagina?
>
>Se vuoi ti giro un esempio che ho fatto per verificare il comportamento
>(è tutto codice aspx):
>
> <script type="text/javascript" language="javascript">
> function canc()
> {
>document.getElementById('<%=txtContattaci.ClientID %>').value="";
> }
> </script>
>
><asp:TextBox ID="txtContattaci" runat="server" Columns="50"
>Rows="15" TextMode="MultiLine" />
> <input type="button" value="Svuota" onclick="canc()" />
>-----------------------------------------
>Rossi Marco
>http://blogs.dotnethell.it/rossimarko

yeah.....finalmente!!!
grazie, così funziona...prima sicuramente non mettevo gli apici!!
grazie!!!!

Ciao Alfredo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5