La funzione che hai scritto penso che dovrebbe essere rivista: a livello sintattico è errato.
Ti commento quello che succede
function calcolaPresenze() {
//Le condizioni a livello concettuale sono giuste
if((document.getElementById('<%=txtNome1.ClientID%>').value!="")&& ( document.getElementById('<%=txtCognome2.ClientID%>').value!=""))
{
//questa è un'uguaglianza, restituisce un Booleano, non è un //assegnazione
document.getElementById('<%=lblCount.ClientID%>').value =="Filled!";
}
}
Il commento sulle condizioni indica che a livello concettuale ci siamo, ma potrebbe non bastare. Forse il mio è soltanto un formalismo, ma in assenza di valore sarebbe bene controllare che quel Value dell'input non solo sia diverso da una stringa vuota, ma che sia diverso anche da null e undefined. Per salvarti gli elementi usa pure i seguenti statement:
var nome=document.getElementById('<%=txtNome1.ClientID%>');
var cognome=document.getElementById('<%=txtCognome2.ClientID%>');
Così puoi rendere la sintassi del tuo script più leggibile, soprattutto nel caso in cui vuoi gestire il nullvalue:
if(((nome!="")&&(nome!==null)&&(nome!==undefined))&&(cognome!="").....)
La disuguaglianza !== trova la sua negazione nell'uguaglianza === e se sei nuova di javascript, è importante conoscerla. E' l'uguaglianza stretta e differisce da quella "normale" == perché è un'uguaglianza che guarda il tipo, oltre che il valore. Se in javascript scrivessi 3=="3" risponderebbe con true, mentre con 3==="3" la risposta sarebbe false.
Ora, il label non essendo un elemento interattivo come l'input, non ha la proprietà value. Puoi tuttavia modificarne il testo tramite il suo attributo InnerHTML come puoi vedere dal seguente link:
http://http://forums.asp.net/t/1313311.aspx Adesso, ti manca soltanto la chiamata javascript a questa funzione. Se il tag script è definito DOPO gli input, allora è possibile fare la chiamata al getElementById direttamente fuori dalla funzione, il che però comporta la globalizzazione delle variabili nome e cognome (assicurati che non ce ne siano altre globali con lo stesso nome oppure si può generare del conflitto). Perché però il tag script dovrebbe stare dopo? Il fatto è che javascript è un linguaggio dichiarativo, quindi le variabili o gli elementi che usi, devono essere dichiarati PRIMA nel documento, al momento dell'utilizzo. Nella funzione non c'era problema di verificare se fossero già dichiarate o meno, poiché se la sua chiamata avveniva DOPO la creazione di tali elementi anche se stava dichiarata PRIMA non c'erano problemi.
Un esempio può valere più di mille parole:
<script type="text/javascript>
function getEl(id)
{
return document.getElementById(id)
}
</script>
......
<input type="text" id="prova"></input>
......
<script type="text/javascript">
var test=getEl("prova");
</script>
Questo codice è giusto. Nel caso in cui però il secondo script venisse dichiarato prima dell'input in questione, la funzione non avrebbe trovato nessun elemento ed avrebbe restituito null o undefined.
L'ultima tappa ora sarebbe quella di decidere quando chiamare la tua funzione.
Abbiamo quindi
<script type="text/javascript">
var nome=document.getElementById('<%=txtNome1.ClientID%>');
var cognome=document.getElementById('<%=txtCognome2.ClientID%>');
function ControllaPresenze()
{
if(((nome!=="")............))
.....
.....
}
//leghiamo la funzione al keyup degli input
nome.onkeyup=ControllaPresenze();
cognome.onkeyup=ControllaPresenze();
</script>
Puoi provare a legare in questa maniera la funzione agli eventi keyup di entrambi i campi, in modo da farla agire senza chiamare il server, e senza quindi avere un postback, invocandola ogni volta che un tasto premuto si solleva mentre scrivi sui campi. Spero sia quello che cerchi e che funzioni.