Asp.net

處理使用者在 ASP.NET MVC 網站中點擊“Enter”鍵

  • June 24, 2009

我正在開發一個具有多個送出按鈕的 ASP.NET MVC 網站。IE

   <input type="submit" name="SubmitButton" value="Reset" />
   <input type="submit" name="SubmitButton" value="OK" />
   <input type="submit" name="SubmitButton" value="Back" />

我需要讓使用者通過按“Enter”鍵快速送出表單。HTML 標準似乎指定如果使用者按下“Enter”鍵,將假定第一個送出按鈕。但是,我需要將第二個按鈕(即“確定”)按鈕設為預設按鈕,出於我什至不想談論的原因,更改按鈕順序不是一種選擇。

我四處搜尋,發現這篇關於在 ASP.NET 中使用 Page.Form.DefaultButton 的文章,但這不適用於 ASP.NET MVC。

我還嘗試了以下 javascript 解決方案,雖然它適用於 Chrome,但不適用於 IE6

   $('body').keypress(function(e) {
      if (e.which === 13) {
         $("input[value='OK']").trigger('click');
      }
   });

我可以想到一些非常極端的解決方案,例如遍歷表單中的每個控制項,並將上述功能附加到它們。但是,我認為這不是一個非常巧妙的解決方案,所以我想知道有沒有人有更好的解決方案?

首先,這是錯誤的:

<input type="submit" name="SubmitButton" value="Reset" />
<input type="submit" name="SubmitButton" value="OK" />
<input type="submit" name="SubmitButton" value="Back" />

這三個都是送出按鈕。重置是 type=“reset” 的輸入。把它整理好。其次,我已經成功實現了類似的東西,它適用於 IE6。嘗試這個:

   function keypressHandler(e)
   {
       if(e.which == 13) {
           e.preventDefault(); //stops default action: submitting form
           $(this).blur();
           $('#SubmitButton').focus().click();//give your submit an ID
       }
   }

   $('#myForm').keypress(keypressHandler);

當使用者按下輸入鍵時,focus() 部分使按鈕看起來被按下。相當漂亮。

引用自:https://stackoverflow.com/questions/1041247