2015-05-01 38 views
2

我想創建一個提交按鈕,當用戶按下Enter鍵時將會提交。Jquery函數永遠不會在第一個實例上運行它被調用

我必須單擊提交按鈕一次,然後才能使用輸入按鈕作爲「虛擬點擊」。

如果我嘗試使用Enter鍵直接提交,它不會這樣做,第一次按下鼠標必須用鼠標。 是什麼導致這個錯誤?

JsFiddle

$("#guessSubmit").keydown(function(event){ 
 
    if(event.keyCode == 13){ 
 
\t \t $("#guessSubmit").click(); 
 
\t } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="submit" id="guessSubmit" onclick=alert("test")>

+0

另外需要注意的是,當你點擊它並按下回車鍵時,只有當你不點擊其他地方時纔會這樣做。所以當你按下回車鍵時,按鈕仍然是「被選中」的。 –

+0

試着將'keydown'賦給你的窗體或父元素? – skobaljic

+0

爲什麼不把keydown事件綁定到'document'或'body'? –

回答

2

您不應該在按鈕上添加按鍵,而是在身體或窗口上。

$(document.body).keydown(function(event){ 
    if(event.keyCode == 13){ 
     $("#guessSubmit").click(); 
    } 
}); 

Demo

+0

偉大的東西,似乎在伎倆! –

+0

@TobyCannon請務必將其標記爲答案。 ;) – rottenoats

+1

Upvoted,必須等待SO定時器標記爲答案 –

0

我有一個非常類似的問題,這是重點做。 我不得不將當前焦點設置爲元素。它適用於鼠標,因爲它可以設置焦點。

這裏是一個更新的代碼

//Submits if enter key is pressed 
      $("#guessSubmit").keydown(function(event){ 
       if(event.keyCode == 13){ 
        $("#guessSubmit").click(); 
        event.preventDefault(); 
       } 
      }); 

$("#guessSubmit").focus(); 

https://jsfiddle.net/6tk92stn/

0

如果強制焦點上的按鈕它應該工作?

$("#guessSubmit").focus().keydown(function(event){ 
    if(event.keyCode == 13){ 
     $("#guessSubmit").click(); 
    } 
}); 
+0

這應該工作,但我不認爲這是最好的方式來做到這一點。 –

+0

我認爲這是一個焦點問題。由於當您加載頁面時按鈕沒有對焦,輸入將不會鏈接到任何內容。出於興趣,你爲什麼不認爲這是做這件事的最好方法? – Clay

+0

實際上,我不確定它甚至可以工作。既然你調用了一個焦點事件,但除了頁面加載之外沒有其他事件可以觸發它嗎? 在我看來,在頁面上調用keydown或者在任何表單域的keydown上調用keydown會更有意義。 –

1

可以使用autofocus屬性:

$("#guessSubmit").keydown(function(event){ 
 
    if(event.keyCode == 13){ 
 
     $("#guessSubmit").click(); 
 
     return false; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="submit" id="guessSubmit" onclick='alert("test")' autofocus>

0

你必須檢查文件點擊鍵碼類似以下內容:

$(document).keypress(function(event){ 
       if(event.keyCode === 13){ 
        $("#guessSubmit").click(); 
       } 
      }); 

檢查Fiddle.

1

該按鈕僅在焦點處接收關鍵事件。您可以通過編程設置焦點,像這樣:

$("#guessSubmit").focus(); 

UPDATE:但是有一個更好的方式來處理的13個重點:把你的按鈕的形式。該表單將提交每當按下Enter鍵和重點是在形式的任何輸入元素上: HTML:

<form id="myform"> 
    <input type="text" name="text" autofocus /> 
    <input type="submit" id="guessSubmit" /> 
</form> 

的JavaScript:

$("#myform").on("submit", function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
    alert("test"); 
}); 

見小提琴這裏:http://jsfiddle.net/robbyn/62vnrcde/

相關問題