我在 javascript 和 asp.net 中的 Enter 键有问题
我有一个这样的控件,它带有一个 textchanged 事件,它会进行查找,但我想在用户输入时控制它
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
这就是为什么我创建了这个运行良好的 javascript 函数。因为它避免了在任何字符输入时的 Enter 回发
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);");
我的页面仍在按 Enter 键进行回发。这个想法是如果至少有 3 个字符,则停止 Enter 回发。有什么想法或其他方法吗?
> -----------------编辑--------------------
我在 EnterEvent 之前添加了这个函数
$(function () {
$(':text').bind('keydown', function (e) {
if (e.keyCode == 13)
e.preventDefault();
});
});
但它阻止了所有页面中的 Enter 。输入根本不起作用。
> -----------------编辑 2--------------------------------
嗯,我成功了!正如我在之前的评论中所说,我尝试像过去一样添加一个虚拟按钮控件,然后从文本框中传输事件并调用它的点击事件。它一点也不干净,但它有效,我很着急。谢谢大家的回答。如果有人仍然可以提供帮助,我将不胜感激。我将继续审查这个问题。谢谢。
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;"/>