ASP.NET e id control
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: ASP.NET, javascript, master pages










