最近在项目开发做了一个小功能,回车调用后台事件,现在拿出来跟大家分享一下:
前台代码:
<script type="text/javascript">
//为TextBox指定回车时执行的Button按钮事件
function enterPressExecuteButtonAction(textBoxID, buttonID) {
if (event.keyCode == 13) {
//获取按钮事件
var func = document.getElementById(buttonID).click;
document.getElementById(buttonID).focus();
func();//调用事件
event.returnValue = false;
}
}
//为TextBox屏蔽回车事件
function EnterEventsAction() {
if (event.keyCode == 13) {
event.keyCode = 0;
event.returnValue = false;
}
}
</script>
<asp:TextBox ID="TextBox1" runat="server" onload="TextBox1_Load" ></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
后台代码:
//按钮事件
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("ni hao 123");
}
//加载事件
protected void TextBox1_Load(object sender, EventArgs e)
{//调用了TextBox扩展方法
TextBox1.RegisterPressEnterAction(this.Button1,ButtonType.Button);
}
还有一个TextBox扩展方法类
public static class TextBoxExtension
{
/// <summary>
/// 为TextBox指定回车时执行的按钮事件
/// </summary>
public static void RegisterPressEnterAction(this TextBox textBox, WebControl button, ButtonType buttonType)
{
switch (buttonType)
{
case ButtonType.Button:
textBox.Attributes.Add("onkeypress", String.Format("enterPressExecuteButtonAction(this.id,'{0}');", button.ClientID));
break;
case ButtonType.Image:
break;
case ButtonType.Link:
textBox.Attributes.Add("onkeypress", String.Format("enterPressExecuteLinkButtonAction(this.id,'{0}');", button.ClientID));
break;
default:
break;
}
textBox.Attributes.Add("onfocus", "javascript:this.select();");
}
public static void RegisterPressEnterAction(this TextBox textBox, string button, string buttonType)
{
switch (buttonType)
{
case "Button":
textBox.Attributes.Add("onkeypress", String.Format("enterPressExecuteButtonAction(this.id,'{0}');", button));
break;
case "Image":
break;
case "Link":
textBox.Attributes.Add("onkeypress", String.Format("enterPressExecuteLinkButtonAction(this.id,'{0}');", button));
break;
default:
break;
}
textBox.Attributes.Add("onfocus", "javascript:this.select();");
}
/// <summary>
/// 为TextBox指定回车时执行的按钮事件
/// </summary>
public static void RegisterPressEnterAction(this TextBox textBox)
{
textBox.Attributes.Add("onkeypress", "EnterEventsAction();");
textBox.Attributes.Add("onfocus", "javascript:this.select();");
}
}
希望对大家有帮助!