【问题标题】:Prevent ASP.NET textbox within a form from submitting the form防止表单中的 ASP.NET 文本框提交表单
【发布时间】:2014-01-21 19:40:35
【问题描述】:

这是我正在处理的页面:

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 使页面更改生效,但仍会触发搜索功能。如何防止它这样做?

【问题讨论】:

    标签: asp.net forms


    【解决方案1】:

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

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

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

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

    如果没有,您可以在调用 goToPage() 后添加 return false;

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

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

    【讨论】:

    • 太棒了,谢谢你的解释。完美运行!
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 啊!没想到把它放在onkeydown中。谢谢!
    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2012-04-05
    相关资源
    最近更新 更多