Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 文本框输入导致回发或重定向?_Jquery_Asp.net_Updatepanel - Fatal编程技术网

Jquery 文本框输入导致回发或重定向?

Jquery 文本框输入导致回发或重定向?,jquery,asp.net,updatepanel,Jquery,Asp.net,Updatepanel,我在asp.net中有一个文本框和一个按钮包装在updatepanel中,如下所示: <asp:UpdatePanel ID="UpdatePanel21" runat="server" UpdateMode="Always" > <ContentTemplate> <asp:TextBox ID="txtLIDescription" runat="server" Columns="50">

我在asp.net中有一个文本框和一个按钮包装在updatepanel中,如下所示:

 <asp:UpdatePanel ID="UpdatePanel21" runat="server" UpdateMode="Always" >
             <ContentTemplate>
                <asp:TextBox ID="txtLIDescription" runat="server" Columns="50">
                </asp:TextBox>
                 &nbsp;<asp:Button ID="btnAddLineItem" runat="server" onclick="btnAddLineItem_Click" 
                     Text="Add" ToolTip="Add line item." UseSubmitBehavior="false" />
                        </ContentTemplate>
        </asp:UpdatePanel>
如果我发出
警报(“hello world”)我看到它已输入if条件,因此它知道已单击enter。然后我希望将焦点设置为按钮,然后让它单击按钮,就像普通终端用户单击按钮一样。没有,好像是发回的

我试着加上:

event.preventDefault();
return false;
在jquery中,希望能够避免它,不是同样的事情。我甚至尝试了ASP.net标记并添加了

UseSubmitBehavior=false


而页面似乎仍在发回。这是因为它位于updatepanel中吗?是否有其他解决方法???

您可以尝试将
UpdatePanel
的内容包装在
面板中,并将其属性设置为
btnAddLineItem

编辑:“问题是,为什么这样做

首先是问题的原因:当您按enter键时,表单中的第一个按钮将被单击,这不是ASP.NET特有的,这是正常行为。但是,仅当导致回发的控件位于UpdatePanel内部时,UpdatePanel才会执行异步回发。否则,您需要为该控件指定一个
AsyncPostBackTrigger

我的方法之所以有效,是因为它确保了当用户在该面板内单击enter时,会单击相应的按钮(在UpdatePanel内)。这将根据需要导致异步回发


这不是黑客攻击,而是ASP.NET2.0中引入的有用功能。您的代码保持可读性,不需要使用“javascript破解”。

但是更新面板在一个div中。我可以以某种方式重用它吗?@oJM86o:一个面板将呈现为一个div。因此您可以用一个面板替换您的div。@oJM86o:编辑了我的答案以添加解释。下载投票者:想评论一下吗?你试过“按键下载”吗?当你按下回车键时会发生什么?特拉维斯-你读过我的帖子吗…当我按下回车键时,它进入if条件并设置焦点,可能会单击,但它做得很快,因为它最终会发回。如果你的代码工作正常,那么按下回车键时你不会进入该条件。“当用户释放键盘上的键时,keyup事件将发送到元素。”您很可能需要处理多个事件。但是,如果你满足于仅仅破解一个解决方案,那么就坚持不倾听。你读过我的评论吗?@TravisJ-我的观点是我进入了正确的位置-我知道如何调试我不是一个傻瓜,我的问题是它仍然被发回。
event.preventDefault();
return false;