2010-11-02 123 views
4

我有兩個按鈕之一與id = enterToSubmit和其他id = clickToSubmit。當用戶點擊enterkey時,我想要「enterToSubmit」按鈕提交表格 而不是「clickToSubmit」按鈕。防止按鈕提交輸入密鑰

在同一頁上,我有一個文本框id = title,並且在頁面加載時我隱藏了「enterToSubmit」按鈕,直到用戶在文本框中輸入內容,然後用戶可以按Enter鍵提交表單。

當用戶按下Enter鍵時,如何防止「clickToSubmit」按鈕提交?

回答

10

可惜你不能改變 '默認' 的HTML提交按鈕,它總是第一個input/buttonsubmit/image類型。因爲Enter並不總是要提交一個表單,這取決於(a)什麼類型的元素是關注的,(b)是否是shift/ctrl + enter被使用,(c)窗體中還有什麼其他元素,以及(d)它是什麼瀏覽器。如果你錯過了一個案例,你會得到意外的默認提交;如果你遇到了不應該的情況,你會收到意外的提交意見。

所以一般來說,當你想控制表單的默認提交動作時,首先要在表單中放置一個額外的按鈕作爲第一個提交按鈕。如果您不希望顯示此按鈕,則可以使用較大的負值left將其放在頁面的旁邊。 (這是一個有點難看,但通過displayvisibility隱藏它會阻止它在某些瀏覽器工作。)

因此,也許你可以「隱藏」在進入到提交通過使其消失按鈕不能不其推關閉無法看到的頁面,然後將其上的click事件捕獲到return false並停止表單提交。

+0

+1這是有用的信息一如既往:) – Sarfraz 2010-11-02 07:36:00

8

當用戶按下Enter鍵時,如何防止「clickToSubmit」按鈕 提交?

試試這個:

$("#clickToSubmit").keypress(function(e){ 
    if(e.keyCode === 13){ 
     e.preventDefault(); 
    } 
}); 
0

嘗試使用文本框驗證碼輸入

$j("#title").keypress(function(e1){ 
    if(e1.keyCode==13){   // if user is hitting enter 
     return false; 
    } 
}); 

的提交按鈕

$j("#clickToSubmit").submit(function(e1){ 
    if(e1.keyCode==13){   // if user is hitting enter 
     return false; 
    } 
}); 
1
jQuery('#clickToSubmit').click(function(e){  
     if(e.keyCode==13){   
      e.preventDefault(); 
     }  
    }); 
1

首先,你必須確保兩個按鈕都不是提交類型。現在在這兩個按鈕上你可以調用兩個不同的JavaScript函數。 enterToSubmit()並單擊ToSubmit()也可以看到在enterToSubmit()上你看到了輸入鍵按

if(e.keyCode === 13){0} {0} {0} {0} }

,並調用form.submit()

同時clickToSubmit()你直接做form.submit()

+0

代碼格式不正確。 – 2017-12-05 22:18:05

0
$('#formId').on('keyup keypress', function(e) { 
      var keyCode = e.keyCode || e.which; 
      if (keyCode === 13) { 
      e.preventDefault(); 
      return false; 
      } 
     }); 



Usually form is submitted on Enter when you have focus on input 
elements. 
We can disable Enter key (code 13) on input elements within a form. 

此外,由於在Firefox中的一些較新版本的表單提交不 阻止,它的安全按鍵事件添加到窗體爲好。

+0

關於這段代碼的一些解釋可能是有益的。 – Pyves 2017-07-17 08:04:11