在一个asp.net inputfield输入prevent回传 [英] Prevent postback on Enter in a asp.net inputfield
问题描述
我有一个关键的问题输入javascript和asp.net
我有哪些做了找到一个TextChanged事件这样的控制,但我想控制它,当用户确实进入
< ASP:文本框ID =TextBox1的=服务器的onkeyup =EnterEvent(事件)的AutoPostBack =真OnTextChanged =TextBox1_TextChanged/>
这就是为什么我创造了这个javascript函数它工作得很好。因为它避免了在输入回发在任何字符输入
函数EnterEvent(五){
VAR键code =(e.key code e.key code:e.which?);
如果(键code == 13){
返回true;
}
其他{
返回false
}
}
然后我想,当文本框包含内容的控制,所以我改变了JS这样。
函数EnterEvent(E,CTRL){
VAR键code =(e.key code e.key code:e.which?);
如果(键code == 13){
返回ctrl.value.length> 2;
}
其他{
返回false
}
}
控制
< ASP:文本框ID =TextBox1的=服务器的onkeyup =EnterEvent(事件,这一点)的AutoPostBack =真OnTextChanged =TextBox1_TextChanged/>
但没有任何反应。任何时候,我确实进入,页面回发。
我也是在code添加了这个背后的负载页
TextBox1.Attributes.Add(安其preSS,EnterEvent(事件,这一点););
TextBox1.Attributes.Add(的onkeyup,EnterEvent(事件,这一点););
TextBox1.Attributes.Add(的onkeydown,EnterEvent(事件,这一点););
我的页面做得还是在回车键回发。我们的想法是,停止输入回发如果至少有3个字符。任何想法或另一种方法?
> -----------------编辑--------------------
我的EnterEvent
之前添加此功能 $(函数(){
$(':文本)。绑定('的keydown,功能(E){
如果(e.key code == 13)
亦即preventDefault();
});
});
但它在阻止所有的页面的输入。输入不能在所有的工作。
> -----------------编辑2 --------------------
好吧,我succeded!正如我在previous评论说,我在过去增加了虚拟按键控制试过像我从文本框转移事件,并呼吁其Click事件。 这是不干净的所有,但它的工作原理,我在赶时间。谢谢大家,你们来回答。如果有人可以帮助我仍AP preciate它。我会继续审查这个问题。谢谢你。
函数EnterEvent(E,CTRL){
VAR键code =(e.key code e.key code:e.which?);
如果(键code == 13安培;&安培; ctrl.value.length→2){
$('[ID $ = Button1的]')点击()。
}
其他{
返回false;
}
}< ASP:文本框ID =TextBox1的=服务器的onkeyup =EnterEvent(事件,这一点)/>
< ASP:按钮的ID =Button1的=服务器的OnClick =TextBox1_TextChanged的风格=能见度:隐藏;宽度:0;/>
< ASP:文本框ID =TextBox1的=服务器的onkeydown =返回EnterEvent(事件,这);的AutoPostBack =真OnTextChanged =TextBox1_TextChanged/>功能EnterEvent(E,CTRL){
VAR键code =(e.key code e.key code:e.which?);
如果(键code == 13安培;&安培; ctrl.value.length→2){
返回false;
}
其他{
返回true;
}
}
I have a problem with the key Enter in javascript and asp.net
I have a control like this with a textchanged event which does a find but I want to control it when the user does enter
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
That's why I created this javascript function which works very well. Because it avoids the Enter postback at any character input
function EnterEvent(e) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return true;
}
else {
return false
}
}
And then I wanted to control when the TextBox has content, so I changed the js like this.
function EnterEvent(e, ctrl) {
var keycode = (e.keyCode ? e.keyCode : e.which);
if (keycode == 13) {
return ctrl.value.length > 2;
}
else {
return false
}
}
The control
<asp:TextBox ID="TextBox1" runat="server" onkeyup="EnterEvent(event, this)" AutoPostBack="true" OnTextChanged="TextBox1_TextChanged" />
But nothing happens. Anytime that I do Enter, the page postback.
I also added this in the code behind on the load page
TextBox1.Attributes.Add("onkeypress", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeyup", "EnterEvent(event, this);");
TextBox1.Attributes.Add("onkeydown", "EnterEvent(event, this);");
My page is still doing postback at Enter key. The idea is to stop the Enter postback if at least has 3 characters. Any idea or another approach?
> -----------------EDIT--------------------
I added this function before the EnterEvent
$(function () {
$(':text').bind('keydown', function (e) {
if (e.keyCode == 13)
e.preventDefault();
});
});
But it blocks the Enter in all the page. Enter doesn't work AT ALL.
> -----------------EDIT 2--------------------
Well, I succeded! As I said in a previous comment, I tried like in the past adding a dummy button control and I transfered the event from the textbox and calling its click event. It's not CLEAN AT ALL but it works and I'm in a hurry. Thank you all you guys for answering. If someone can help still I would appreciate it. I'll continue reviewing this question. Thanks.
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;"/>
<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;
}
}
这篇关于在一个asp.net inputfield输入prevent回传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!