[英]Prevent postback on Enter in a asp.net inputfield
我的密钥输入在javascript和asp.net中有问题
我有一个这样的控件,带有一个textchanged事件,可以查找,但我想在用户输入时控制它
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event)" AutoPostBack="true" OnTextChanged="TextBox1_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
}
}
控制
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
但没有任何反应。 任何时候我进入,页面回发。
我还在加载页面后面的代码中添加了这个
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;
}
}
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" />
<asp:Button ID="Button1" runat="server" OnClick="TextBox1_TextChanged" style="visibility:hidden;width:0;"/>
有类似的需要阻止输入按键(虽然,我不需要考虑输入长度条件,如在这种情况下),并发现这解决了问题...比添加整个脚本块更简单,如果您需要由于有人在文本区域按Enter键,因此停止表单回发。
<asp:TextBox ID="tb_Input" runat="server" onkeypress="return event.keyCode != 13;"></asp:TextBox>
我以为我会分享这个以防其他人只是在搜索这个功能。
尝试:
e.preventDefault();
停止Enter事件。
我建了一个小提琴手:
http://jsfiddle.net/rblaettler/Y3b8F/5/
这是你想要做的吗? 如果您的字符数超过2个,则仅提交。
<asp:TextBox ID="TextBox1" runat="server" onkeydown="return EnterEvent(event,this);" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13 && ctrl.value.length > 2) {
return false;
}
else {
return true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.