ASPX Caixa de texto: Executar método ao tocar a tecla de retorno
Pergunta
Eu tenho uma caixa de busca que não tem um botão de envio, eu preciso ser capaz de bater entrar e, em seguida, executar um método, como posso fazer isso?
Solução
Você também pode fazer algo simples como isso com CSS:
<asp:Panel DefaultButton="myButton" runat="server">
<asp:TextBox ID="myTextBox" runat="server" />
<asp:Button ID="myButton" runat="server" onclick="myButton_Click" style="display: none; " />
</asp:Panel>
O painel pode ou não ser necessária, dependendo da sua implementação e controles ao redor, mas isso funciona e faz um postback para mim.
Outras dicas
Você pode adicionar um botão escondido para a página e fio-up seu método de evento de clique que do botão. Em seguida, adicione um pouco de javascript para gatilho que ação postback do botão quando você pressionar enter dentro da caixa de texto.
this.myTextBox.Attributes.Add(
"onkeydown",
"return keyDownHandler(13, 'javascript:"
+ this.Page.ClientScript.GetPostBackEventReference(this.myButton, string.Empty).Replace("'", "%27")
+ "', event);");
(Você também pode substituir o hard-coded 13 com Windows.Forms.Keys .Enter, se você preferir mais fácil um para ler a versão.)
Onde keyDownHandler é uma função JavaScript como este:
function keyDownHandler(iKeyCode, sFunc, e) {
if (e == null) {
e = window.event;
}
if (e.keyCode == iKeyCode) {
eval(unescape(sFunc)); return false;
}
}
Note, este é baseado na implementação de DotNetNuke 's ClientAPI utilitário web .
Use o evento TextChanged, e defina a propriedade AutoPostBack para true.