codice:
function cerca_per_nome(e)
{
e = e || window.event;
var k = e.which || e.keyCode;
if(k == 13)
{
if(e.preventDefault)
e.preventDefault();
else
e.returnValue = false;
var target = (e.target)? e.target : e.srcElement;
if(target.value == "")
alert("Digitare un nome o parte di nome da ricercare.");
else
__doPostBack('Button_ricerca_per_nome', '');
}
}
<input name="TextBox_ricerca_per_nome" type="text" value="cerca per nome" id="TextBox_ricerca_per_nome" title="Ricerca per nome o parte di nome" onkeypress="cerca_per_nome(event);" onfocus="this.value='';" />
<input type="submit" name="Button1" value="Button" id="Button1" />
LinkButton
Il tuo aiuto è sempre prezioso
Questo può essere utile quando nella pagina c'è poco spazio. Dentro un TextBox compare una scritta di spiegazione, nel mio caso "cerca per nome".
Quando il controllo riceve il focus perde questa scritta e si può scrivere. L'enter scatena il postback al server. Se non si scrive nulla compare un messaggio di alert.
ps. Dato che sei molto gentile, e dato che mi interessa pure capire dove sbagliavo, mostro come facevo prima.
Nel TextBox mettevo:
onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {cerca_per_nome(this);return false;} else return true; " onfocus="this.value='';"
la funzione cerca_per_nome
function cerca_per_nome(v)
{
if(v.value == "")
{
//alert("Digitare un nome o parte di nome da ricercare.");
window.setTimeout(function(){alert("Digitare un nome o parte di nome da ricercare.");}, 1);
}
else
{
__doPostBack('<%#Me.Button_ricerca_per_nome.Unique Id %>', '');
}
}
In principio non c'era il setTimeout
con IE8 andava (anche con IE6 e IE7). Con Firefox no.
Mettendo il setTimeout va pure in firefox, ma non in Opera
Ciao