2010-11-17 49 views
20

我有一個aspx頁面,當它不應該回發時。在頁面上有兩個文本框,兩個列表框和兩個按鈕。如果在任何點按下回車鍵,則第一個按鈕被給予焦點並被「點擊」,導致列表框內的選擇丟失。ASP.Net頁面輸入密鑰導致回發

如何禁用此功能?有很多關於如何捕獲輸入按鈕和執行方法的教程,但我可以找到一個關於如何簡單地禁用整潔的「讓我抓住我找到並點擊它的第一個按鈕」功能的上述功能。

+1

參見http://stackoverflow.com/questions/1934223/disabling-default-button-or-enter -key-in-asp-et-c-sharp – Rory 2012-08-06 20:11:21

回答

29
  • 您可以設置窗體或面板上的DefaultButton。這樣你就可以完全控制發生了什麼。
  • 設置UseSubmitBehavior =您的按鈕上的「False」。這將禁用Enter上的「AutoPostback」。

我寧願第二個,如果我想防止回傳完全輸入。

+0

如果它的imagebutton ..最新的解決方案。 – SRJ 2014-11-18 07:55:36

+1

@SRJ:你可以用'Image'代替。或者看看這個問題,解決這個問題:http://stackoverflow.com/questions/1561400/how-to-disable-submit-behaviour-of-aspimagebutton – 2014-11-18 08:00:08

+0

使用「」和按鈕的屬性「UseSubmitBehavior」假的是我對類似問題的解決方案。來源如下:https://pastebin.com/9hXJBrmk – 2018-01-24 19:49:38

1

這是一個Web應用程序的默認行爲,您可以通過放棄提交來獲取您找到的一個教程,並隱藏該行爲。

19

你使用jQuery嗎?

如果是這樣:

$(document).keypress(function(e) 
{ 
    if(e.keyCode === 13) 
    { 
     e.preventDefault(); 
     return false; 
    } 
}); 
+4

這不會阻止enter鍵在textarea中插入空行嗎? – 2012-06-01 17:44:48

+0

當焦點位於輸入按鈕應該調用提交的文本框中時,它也會停止提交行爲(即「用戶名/密碼文本框」) – sohaiby 2016-09-15 12:38:09

+0

偉大的解決方案。 @sohaiby @Tony_Henrich很容易將'document'替換爲一個選擇器,該選擇器恰好定位那些輸入鍵應被抑制的輸入。通過使用普通的JS來規避jQuery也很容易,但毫無意義。 – Roland 2018-03-06 14:59:07

6

使用下面的代碼來禁用導致回傳的回車鍵。這段代碼將阻止上述所有瀏覽器4.0中的回車鍵,除非在Textarea或Submit按鈕本身按下Enter鍵。

<script language="JavaScript"> 
var nav = window.Event ? true : false; 
if (nav) { 
window.captureEvents(Event.KEYDOWN); 
window.onkeydown = NetscapeEventHandler_KeyDown; 
} else { 
document.onkeydown = MicrosoftEventHandler_KeyDown; 
} 

function NetscapeEventHandler_KeyDown(e) { 
if (e.which == 13 && e.target.type != 'textarea' && e.target.type != 'submit') { 
return false; 
} 
return true; 
} 

function MicrosoftEventHandler_KeyDown() { 
if (event.keyCode == 13 && event.srcElement.type != 'textarea' && 
event.srcElement.type!= 'submit') 
return false; 
return true; 
} 
</script> 
1
<body onkeydown = "return (event.keyCode!=13)"> 
3

只有把這個你ASP.Net TextBox控件:

<asp:TextBox ID="TextBox1" runat="server" 
    onkeydown = "return (event.keyCode!=13);" > 
</asp:TextBox>