2010-02-02 102 views
5

這裏有一個真正的頭刮:我有一個頁面上有幾個控件,還有一個ASP:按鈕或兩個。當我在一個控件中,並按下Enter鍵時,它就像我點擊了提交按鈕,在這個時候我實際上並不想這樣做。輸入按鍵觸發按鈕點擊 - 但我不想它

該按鈕不在ASP中:具有DefaultButton集的面板,它沒有OnClientClick屬性,我可以看到沒有監視Enter鍵的JavaScript ......爲什麼它會發射?

如果我創建了一個標準的.ASPX頁面,並在其上放置了一個文本框和一個按鈕,運行它並按下回車鍵,該按鈕將被忽略,例如,點擊事件不會觸發。這是我期望的行爲,但沒有得到。

總之,還有什麼可能導致按鈕認爲它是頁面的默認按鈕?

謝謝

邁克K.


好吧,這裏是我的測試頁標記:

<p><asp:Label ID="uxNameL" runat="server" AssociatedControlID="uxName">Name</asp:Label><asp:TextBox ID="uxName" runat="server"></asp:TextBox></p> 
<p><asp:Button id="uxSubmit" runat="server" Text="Submit" onclick="uxSubmit_Click" /></p> 
<asp:Literal ID="uxOut" runat="server" EnableViewState="false"></asp:Literal> 

這裏的代碼會發生什麼:

protected void uxSubmit_Click(object sender, EventArgs e) 
    { 
     uxOut.Text = uxName.Text; 
    } 

當我運行該頁面,然後輸入一些內容文本框中的文本,然後按回車 - 公頃,你會看看:在IE 8中,按鈕事件被忽略,例如,頁面只是重新加載,但在FF中,它提交表格...

嗯。

回答

8

我相信(並且支持糾正),但是如果你有一個表單,並且輸入按鈕類型爲submit,那麼當你按下回車鍵時,它會觸發該按鈕的點擊。

+0

我設置的測試頁發出一個,但不會觸發按鈕提交:-s – 2010-02-02 15:13:51

+0

請在IE8和FF中查看我自己的答案...最奇怪的。 – 2010-02-02 15:35:33

1

其實我已經嘗試過,現在在螢火蟲玩它,它看來,這是一個標準的瀏覽器的行爲,即它具有無關JavaScript或ASP。如果你有提交按鈕和一個文本框,那麼它只是提交輸入。將輸入的類型更改爲按鈕以避免它。

+0

請在IE8和FF中查看我自己的答案......最奇怪的是。 – 2010-02-02 15:36:48

4

如果你不希望回車鍵觸發,也許你可以添加這個js代碼添加到網頁:

if (window.event.keyCode == 13) 
{ 
    event.returnValue=false; 
    event.cancel = true; 
} 

您需要在的<body>標籤調用這個函數與onkeydown事件處理程序的頁。

0

) HTML代碼:

<form method="post" action="add_data.php" id="master_form"> 
<input type='text' name='user-mail' /> 
<input type="button" value="Submit" onclick="submitform();" /> 
</form> 

javascript代碼:

function submitform() 
{ 
document.getElementById('master_form').submit(); 
} 
13

通常

<asp:Button ID="button" UseSubmitBehavior="false"/> 

作品。但是,您可能需要禁用應用程序中的退格,這會在最近的歷史記錄中返回1頁。

+1

我認爲同樣重要的是要注意,如果你使用'UseSubmitBehavior =「false」',它不僅會阻止它響應輸入按鈕,而且它會停止在你後面的代碼中引發按鈕點擊事件點擊按鈕,這可能不是預期的結果。 – Hawkeye 2017-07-26 16:08:23