2013-04-17 88 views
10

我有一個內置textfield的表單,如果用戶按下在選擇文本框時輸入,我試圖在瀏覽器提交整個表單時禁用默認行爲。禁用輸入提交

$('#recaptcha_response_field').keydown(function(event) { if (event.keyCode == 13) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    event.stopImmediatePropagation(); 
    alert("You Press ENTER key"); 
    return false; 
    } 
}); 

當前正在獲取「您按ENTER鍵」,並且默認行爲未被覆蓋。

+1

不要使用輸入的keydown事件,使用提交表單的事件。 –

+1

Duplicate http://stackoverflow.com/questions/585396/how-to-prevent-enter-keypress-to-submit-a-web-form請問你的問題谷歌提交之前在這裏。這將爲您提供已經被詳細解答的原始問題。 – iAmClownShoe

+1

'preventDefault'絕對夠用。你也不需要停止傳播,也不需要返回錯誤。 – Bergi

回答

20

試試這個:

$(document).on("keypress", 'form', function (e) { 
    var code = e.keyCode || e.which; 
    if (code == 13) { 
     e.preventDefault(); 
     return false; 
    } 
}); 

這將防止在表格上keypress

DEMO HERE

+0

無法正常工作,在提交後仍然會重定向 – user2288298

+0

,因此,您無法禁用默認行爲,因爲它已經發生。 – iAmClownShoe

+0

@ user2288298更新了代碼。嘗試一次.. –

2

提交如果上述解決方案是爲你工作,而你正在使用JavaScript無論如何,爲什麼你不使用按鈕類型作爲'按鈕'<input type='button'>並使用javascript提交它

$('#form_id').submit(); 
1

你可以使用這個腳本來防止整個輸入。

<script type="text/javascript"> 
     $(document).on("keypress", 'form', function (e) { 
      if (e.target.className.indexOf("allowEnter") == -1) { 
       var code = e.keyCode || e.which; 
       if (code == 13) { 
        e.preventDefault(); 
        return false; 
       } 
      } 
     }); 
    </script> 

你把類名哪個控件需要使用輸入

8

我發現了這一點,它爲我工作。

<input type="text" name="somename" id="someid" value="" onkeypress="return event.keyCode!=13"> 
+0

只是簡單,謝謝! –

3

防止腳本阻止其他元素(如textarea)上的回車鍵。將目標從「表單」更改爲「輸入」。

$(document).on("keypress", "input", function (e) { 
 
    var code = e.keyCode || e.which; 
 
    if (code == 13) { 
 
     e.preventDefault(); 
 
     return false; 
 
    } 
 
});

相關問題