Textbox控件注册回车事件及触发按钮提交事件具体实现

引子
在ASP.Net页面中textbox的index为1(或n),其后的提交按钮index为2(n+1),光标在textbox中,回车后自动焦点移动到后面的button上,会触发button的点击事件。

但在Lyncplus客户端中访问Web页面时遇到了TextBox控件回车自动完成按钮的提交事件失效的情况(应该是自动切换焦点)。

由于并且该服务端TextBox控件没有提供OnKeyPress或OnKeyDown等事件,也无法针对回车事件写后台代码来调用Button按钮的点击事件。

于是上网查找相关的介绍,最终解决了以下两个问题
(一)、实现在TextBox控件回车事件中 执行JS代码,来控制页面元素的值。
(二)、实现在TextBox控件回车事件中 调用服务端控件的点击事件,来执行服务端C#代码,实现相关的功能。
具体实现如下
一、注册和触发服务端TextBox控件回车事件
1.PageLoad事件代码:


代码如下:

protected void Page_Load(object sender, EventArgs e)
{
MessageTxt.Attributes.Add("onkeypress", "EnterTextBox()");
MessageTxt.Attributes.Add("onkeydown", "EnterTextBox()");
}

2.javascript代码:


代码如下:

<script language="javascript">
function EnterTextBox() {
if (event.keyCode == 13 && document.all["MessageTxt"].value != "") //按下了回车,并且文本框里有值
{
$("#<%=hidKeywords.ClientID%>").val($("#<%=MessageTxt.ClientID%>").val().replace(/[^\u0000-\u00FF]/g,
function ($0) {
return escape($0).replace(/(%u)(\w{4})/gi, "&#x$2;")
}));
}
}
</script>

二、TextBox控件回车事件中调用服务端Button控件点击事件
1.PageLoad事件代码: 同上。


代码如下:

protected void Page_Load(object sender, EventArgs e)
{
MessageTxt.Attributes.Add("onkeypress", "EnterTextBox()");
MessageTxt.Attributes.Add("onkeydown", "EnterTextBox()");
}

2.javascript代码: 注意使用原始的dom对象获取按钮,使用Jquery获取不到。


代码如下:

<script language="javascript">
function EnterTextBox() {
var button = document.getElementById('<%=btnSearch.ClientID%>');//获取服务端控件对应的页面对象
if (event.keyCode == 13) //按下了回车
{
  button.click();
event.returnValue = false;
}
} </script>

(0)

相关推荐

  • 用JS控制回车事件的代码

    我们操作习惯也确实是喜欢用回车建来直接提交数据.经过对项目的一番检查,这其实是页面设计得不好,导致浏览器在加载时把退出登录按钮当成默认的按钮,所以一按回车就触这退出按钮事件.考虑到一个庞大的项目为了这个问题去改页面设计也不太现实,况且客户要求在有"保存"按钮时按回车按钮就触发"保存"按钮事件,有"下一步"按钮时就触发它的事件,有"提交"按钮时就触发相应的事件等等,如果一个个页面去改动那工作量可就大得惊人了.于是乎考虑用直接在模

  • jquery多浏览器捕捉回车事件代码

    复制代码 代码如下: $(document).keydown(function(event) { if (event.keyCode == 13) { $('form').each(function() { //你的要运行的代码 }); } }); 但是在opera中还是不行,技穷,一气之下把回车事件给屏蔽了 <form id="Form1" runat="server" onsubmit="return false;"> 可能这样做

  • asp.net中绑定TextBox回车事件的解决方法

    1.将页面上的回车事件都绑定到按钮上 复制代码 代码如下: function EnterTextBox(e) { var msie = (document.all) ? true : false; var keycode; if(!msie) keycode = window.event ? e.keyCode : e.which; else keycode = e.keyCode; //alert(keycode); if(keycode==13 && document.getEleme

  • jquery 回车事件实现代码

    例子,jquery键盘事件.回车键事件用法. // 键盘事件 1.keydown()  keydown事件会在键盘按下时触发. 2.keyup()  keyup事件会在按键释放时触发,也就是你按下键盘起来后的事件 3.keypress()  keypress事件会在敲击按键时触发,我们可以理解为按下并抬起同一个按键 复制代码 代码如下: // 回车键事件 // 绑定键盘按下事件     $(document).keypress(function(e) {      // 回车键事件       

  • Textbox控件注册回车事件及触发按钮提交事件具体实现

    引子: 在ASP.Net页面中textbox的index为1(或n),其后的提交按钮index为2(n+1),光标在textbox中,回车后自动焦点移动到后面的button上,会触发button的点击事件. 但在Lyncplus客户端中访问Web页面时遇到了TextBox控件回车自动完成按钮的提交事件失效的情况(应该是自动切换焦点). 由于并且该服务端TextBox控件没有提供OnKeyPress或OnKeyDown等事件,也无法针对回车事件写后台代码来调用Button按钮的点击事件. 于是上网

  • C#递归遍历窗体所有textbox控件并设置textbox事件的方法

    本文实例讲述了C#递归遍历窗体所有textbox控件并设置textbox事件的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public virtual void SetTextBo

  • C# TextBox控件实现只能输入数字的方法

    只需要在控件TextBox的keypress事件中写入如下代码即可满足要求: 代码如下: 复制代码 代码如下: if (e.KeyChar == '.' && this.txbEnd.Text.IndexOf(".") != -1)             {                 e.Handled = true;             } if (!((e.KeyChar >= 48 && e.KeyChar <= 57) |

  • asp.net 动态创建TextBox控件及状态数据如何加载

    接着上文Asp.net TextBox的TextChanged事件你真的清楚吗? 这里我们来说说状态数据时如何加载的.虽然在Control中有调用状态转存的方法,但是这里有一个判断条件 if (_controlState >= ControlState.ViewStateLoaded) 一般的get请求这里的条件是不满足的. 复制代码 代码如下: internal enum ControlState { Constructed, FrameworkInitialized, ChildrenIni

  • asp.net TextBox控件设置ReadOnly后,不能回传。

    很奇怪,以前都没有过这样的怪问题,在别人机器上都能正常,想到可能和ASP.NET的版本有关系. 我用的是 ASP.NET 2.0,当改成 ASP.NET 1.0,就正常了,TextBox控件ReadOnly=True,能回传. 在 ASP.NET 1.0 中是ReadOnly=True会回传的. 在 ASP.NET 2.0 中是ReadOnly=True就不会回传了. 解决的方法: <asp:textbox id="Username" runat="server&quo

  • Winform项目中TextBox控件DataBindings属性

    DataBindings属性是很多控件都有的属性,作用有2方面.一方面是用于与数据库的数据进行绑定,进行数据显示.另一方面用于与控件或类的对象进行数据绑定.这里主要关注后者.主要用法是将某个对象的某个属性与指定对象的指定属性进行关联. Label.TextBox等都包含DataBindings属性,其类型为ControlBindingsCollection,是Binding类的集合.Binding类代表某对象属性值和某控件属性值之间的简单绑定.如可以将TextBox的Text属性值绑定到Labe

  • C# Timer控件学习之使用Timer解决按钮幂等性问题

    目录 前言: Timer控件的属性 Timer控件的方法 界面设计 效果演示 代码逻辑 总结 前言: Timer是一个定时器,作为C#开发Timer控件是我们用的比较多的一个控件,它的功能很简单,但是也是值得我们去学习的一个知识点,今天这篇文章就是想总结一下这个Timer控件,如果经常用还好,可以随时知道怎么写,对于我这种记性不好的同学呢,我就以这种形式去做一个小小的笔记,方便自己下一次使用和查询,内容比较简单,会的同学可以略过了! Timer控件的属性 属性AutoReset 获取或设置一个布

  • jQuery的控件及事件(输入控件及回车事件)使用示例

    复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>JavaScript</title> <style type="text/css"> body { /* 对页面布局进行调整 */ background-color: #ccc

  • asp.net ASPxTextBox等控件实现"回车模拟Tab"的 常用代码整理

    近期在做一个Web项目,我使用DevExpress第三方控件. 由于该控件使用技巧中文资料较少,还真够呛的,只能边摸索,边开发. 今天我要实现一些编辑框如ASPxTextBox.ASPxComboBox等控件回车模拟Tab的功能.这没办法,用户用惯了回车,讨厌按Tab来移动焦点(鼠标点击更麻烦). 以ASPxTextBox为例,在ClientSideEvents属性中可设置许多客户端JavaScript代码,其中KeyPress就是我要写的. 首先,得准备要模拟Tab的JS代码,这网上很多,我随

  • .NET中TextBox控件设置ReadOnly=true后台取不到值三种解决方法

    当TextBox设置了ReadOnly="true" 后,要是在前台为控件添加了值,后台是取不到的,值为"空" 原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充值,并不希望用户修改其控件内容,这时就比较尴尬了. 刚开始是换成Html 里的 <input type="text" readonly="readonly" > ,不过后来发现这个工作量是很大的, 所以网上搜了下,没找出Text

随机推荐