2014-01-21 149 views
2

這裏是我工作的頁面:防止ASP.NET文本框提交表單

http://mcstevenswholesale.com/catalog.aspx

目錄下面的文本框,您可以跳過在目錄中的特定頁面。但是,如果您在該文本框中按Enter鍵而不是單擊「Go」按鈕,則會在左上方的列中提交搜索功能。我認爲這是因爲整個頁面位於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

回車鍵的默認行爲是提交當前的形式,大部分(如果不是全部)的瀏覽器。

您需要禁止回車鍵的默認行爲。抑制默認行爲的正確方法是讓事件處理程序返回假

如果GotoPage記述()返回false最簡單的解決方案是:

的onkeydown = 「如果(event.keyCode == 13)返回GotoPage記述();」

如果不是的話,您可以在調用goToPage()之後添加返回false。

的onkeydown = 「如果(event.keyCode == 13){GotoPage記述();返回false}」

這將導致回車鍵不提交表單時頁碼內壓文本框。如果要禁用它整個頁面看到以下內容:

+0

太棒了,謝謝你的解釋。完美的作品! – chazbot7

1

試試這個:

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

啊!沒想到把這個權利放在onkeydown。謝謝! – chazbot7