防止在asp.net输入字段中回车

我的密钥在javascript和asp.net中输入有问题

我有一个这样的控件,带有一个textchanged事件,可以查找,但我想在用户输入时控制它

 

这就是为什么我创建了这个非常好用的javascript函数。 因为它避免了在任何字符输入处输入回发

  function EnterEvent(e) { var keycode = (e.keyCode ? e.keyCode : e.which); if (keycode == 13) { return true; } else { return false } } 

然后我想控制TextBox何时有内容,所以我改变了这样的js。

  function EnterEvent(e, ctrl) { var keycode = (e.keyCode ? e.keyCode : e.which); if (keycode == 13) { return ctrl.value.length > 2; } else { return false } } 

控制

  

但没有任何反应。 任何时候我进入,页面回发。

我还在加载页面后面的代码中添加了这个

  TextBox1.Attributes.Add("onkeypress", "EnterEvent(event, this);"); TextBox1.Attributes.Add("onkeyup", "EnterEvent(event, this);"); TextBox1.Attributes.Add("onkeydown", "EnterEvent(event, this);"); 

我的页面仍然按回车键进行回发。 我们的想法是,如果至少有3个字符,则停止输入回发。 任何想法或其他方法?

> —————–编辑——————–

我在EnterEvent之前添加了这个函数

  $(function () { $(':text').bind('keydown', function (e) { if (e.keyCode == 13) e.preventDefault(); }); }); 

但它会阻止所有页面中的Enter。 输入不起作用。

> —————– EDIT 2 ——————–

好吧,我成功了! 正如我在之前的评论中所说的那样,我在过去尝试添加一个虚拟按钮控件,然后从文本框转移事件并调用其click事件。 它并不干净,但它有效,而且我很着急。 谢谢大家的回答。 如果有人可以提供帮助,我会很感激。 我会继续回顾这个问题。 谢谢。

  function EnterEvent(e, ctrl) { var keycode = (e.keyCode ? e.keyCode : e.which); if (keycode == 13 && ctrl.value.length > 2) { $('[id$=Button1]').click(); } else { return false; } }   

有一个类似的需要阻止输入按键(虽然,我不需要考虑输入长度条件,如在这种情况下),并发现这解决了问题…比添加整个脚本块更简单,如果所有你需要do是由于某人在文本区域中按Enter键而停止表单回发。

  

以为我会分享这个以防其他人只搜索此function。

  function EnterEvent(e, ctrl) { var keycode = (e.keyCode ? e.keyCode : e.which); if (keycode == 13 && ctrl.value.length > 2) { return false; } else { return true; } } 

尝试:

 e.preventDefault(); 

停止Enter事件。

我建了一个小提琴手:

http://jsfiddle.net/rblaettler/Y3b8F/5/

这是你想要做的吗? 如果您的字符数超过2个,则仅提交。