防止表单中的ASP.NET文本框提交表单

时间:2014-01-21 19:40:35

标签: asp.net forms

这是我正在处理的页面:

http://mcstevenswholesale.com/catalog.aspx

目录下方的文本框允许您跳至目录中的特定页面。但是,如果您在该文本框中按Enter键而不是单击“开始”按钮,则会在左上方的列中提交搜索功能。我认为这是因为整个页面都位于ASP表单中,但我对右侧的电子邮件注册框没有同样的问题。

我尝试将页码文本框放入自己的HTML表单中,并尝试将按钮更改为图像,按钮和提交输入。这些都没有奏效。我不希望页面重新加载,只需翻页。我对ASP很新,所以如果我犯了一个非常明显的错误,我很抱歉。

这是页码文本框的代码(goToPage是翻转目录页面的JS函数):

<div id="goToPage">
    Go to Page: 
    <input id="pageTextbox" type="text" onkeydown="if (event.keyCode == 13) goToPage();"></input>
    <a onclick="goToPage()" href="#"></a>
</div>

onkeydown使页面更改工作,但仍然会触发搜索功能。我该如何阻止它这样做?

2 个答案:

答案 0 :(得分:2)

回车键的默认行为是在大多数(如果不是全部)浏览器中提交当前表单。

您需要禁止输入键的默认行为。抑制默认行为的正确方法是让事件处理程序返回false

如果goToPage()返回false,则最简单的解决方案如下:

  

onkeydown =“if(event.keyCode == 13)return goToPage();”

如果不是,您可以在调用goToPage();

之后添加return false
  

onkeydown =“if(event.keyCode == 13){goToPage(); return false}”

这将导致在页码文本框中按下时,回车键不提交表单。如果要为整个页面禁用它,请参阅以下内容:

答案 1 :(得分:1)

试试这个:

onkeydown="if (event.keyCode == 13) { goToPage(); return false; }"