2013-04-18 19 views
0

以下問題:JavaScript使用Firefox更改默認按鈕概率

我有一個按鈕列表,然後用一個按鈕添加一個新條目的文本框。 在這兩者中,列表按鈕和添加按鈕都是用於確認動作的JavaScript例程。

現在我遇到了這樣的問題,即當用戶按下輸入文本框中的第一個按鈕,如果列表將被調用,而不是添加按鈕。 所以我在按鈕的「onkeydown」事件中添加了JavaScript,其中我使用「return false;」以避免在檢查返回按鈕被按下後第一個按鈕將被調用。 這適用於以下行: onkeydown =「if(event.which == 13){return false;}」 但是,只要在「return false;」之前添加任何JavaScript代碼, (我需要一個確認消息和其他一些JavaScript例程),firefox瀏覽器會調用onkeydown事件中的第一個按鈕AND javascript代碼... 在Internet Explorer上似乎沒有發生此行爲。

我已經嘗試了幾個小時找到解決方案,但我找不到一個,我也無法在互聯網上找到正確的提示。 因此,如果有人能夠幫助我解決這個問題,我會很高興。

我試圖建立一個代碼示例,其中每個人都可以重現錯誤的行爲。 在上次輸入控件中,我添加了onkeydown事件。 有人可以告訴我爲什麼當Firefox按下文本輸入字段中的Enter按鈕時,Firefox爲什麼會顯示第一個按鈕的確認消息?

<html> 
<head> 
</head> 
<body> 
    <form method="post" action="Test.html" id="ctl00"> 
    <div id="divTest"> 
     <table> 
      <tr> 
       <td> 
        Testline 1 
       </td> 
       <td> 
        <input type="submit" onclick="if (confirm('Sure?')) alert('the wrong postback'); else return false;" value="Test1" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Testline 2 
       </td> 
       <td> 
        <input type="submit" onclick="if (confirm('Sure?')) alert('the wrong postback'); else return false;" value="Test2" /> 
       </td> 
      </tr> 
     </table> 
    </div> 
    <table> 
     <tr> 
      <td> 
       Enter name: 
      </td> 
      <td> 
       <input type="text" size="30" onkeydown="if (event.which == 13) { alert('test'); return false; }" /> 
      </td> 
      <td> 
       <input type="submit" title="Add it" onclick="alert('the correct postback')" /> 
      </td> 
     </tr> 
    </table> 
    </form> 
</body> 

回答

0

更換到處

type="submit" 

type="button" 

,這樣打 「回車」 將不提交表單。

但整個方案很奇怪:你想提交表單嗎?如果是這樣,爲什麼不(通常情況下)只有一個函數檢查所有字段?

+0

是的,我想提交表單,因爲我有一個右邊有刪除按鈕的「網格」,在那裏我需要一個「回傳」,因爲我使用的是ASP.Net,我想在那裏有事件引發。 – user2294634

+0

另一個按鈕「添加」(在我的應用程序「添加電子郵件」)是在網格下(網格是在一個面板內),我有一條線添加一個新的條目到網格,並且我想要作爲默認的「添加」按鈕,可輸入新名稱的文本輸入字段。 但感謝與「type = button」的提示..也許這可以給我一些提示..但無論如何:我認爲我現在通過使用「onkeypress」事件,而不是「onkeydown」的解決方案..似乎更好地工作..不是所有的情況下,但更好:) – user2294634