Attualità e Information Technology

July 29, 2006

ASP.NET e id control

Filed under: IT, .NET

Situazione classica. Dentro un web user control abbiamo un oggetto con un certo id e una funzione javascript che deve manipolare tale oggetto. Per recuperarlo e lavorarci in genere si usa getElementById. Problema: quando questo web user control è dentro ad una pagina e magari questa a suo volta si appoggia ad una master page, l’id dell’oggetto sopra citato è mutato, nel senso che prima di quello assegnato da noi ASP.NET aggiunge info riguardanti le parti in cui è stato inserito, così da garantirsi la univocità dell’id stesso. La nostra funzione javascript dunque? Non funzionerà, a meno di non usare la proprietà CliendID sull’oggetto in questione dentro il javascript. ClientID infatti restituisce l’id dell’oggetto a run-time.

Esempio:

<script language="javascript">

function ControllaInput()
{
var txtArea="<%=CorpoMessaggio.ClientID%>";
elem = document.getElementById(txtArea);
Msg = elem.value;
len = Msg.length;

Msg = Msg.replace("è", "e'");
Msg = Msg.replace("é", "e'");
Msg = Msg.replace("ù", "e'");
Msg = Msg.replace("à", "a'");
Msg = Msg.replace("ò", "o'");
Msg = Msg.replace("ì", "i'");

if((Msg.length > 160) || (len != Msg.length))
{
Msg = Msg.substring(0, 160);
elem.value = Msg;
}
var txtCar="<%=LabCarRim.ClientID%>";
elem = document.getElementById(txtCar);
elem.innerHTML = "Caratteri utilizzati <font color=red><b>" + Msg.length + "/160</b></font>";
}

</script>

<table border="0" cellpadding="0" cellspacing="0">
<tr><td><div id="LabCarRim" runat="server">Caratteri utilizzati <font color="red"><b>0/160</b></font></div></td></tr>
<tr><td>
<textarea name="CorpoMessaggio" id="CorpoMessaggio" runat="server"
onkeydown="javascript:ControllaInput();" onkeyup="javascript:ControllaInput();" onkeypress="javascript:ControllaInput();" onpaste="javascript:ControllaInput();" rows="5" cols="40"></textarea>
</td></tr>
</table>

Che cosa fa? E’ una textarea per l’immissione di testo per un servizio di invio sms. Sostituisce i caratteri accentati (il carrier non li supporta) e verifica non si sforino i 160 caratteri.

Technorati tags: , ,

AddThis Social Bookmark Button

Comments »

The URI to TrackBack this entry is: http://oplero.blogsome.com/2006/07/29/aspnet-e-id-control/trackback/

No comments yet.

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>


   

Get free blog up and running in minutes with Blogsome | Theme designs available here