2009-12-01 100 views
0

我有一個按鈕,<input type="button" name="button">當我點擊它,我從另一個輸入文本<input type="text" name="btxt">來,做一些無關緊要的動作在這個問題上的JavaScript提交的值,提交/模擬按鍵HTML

問:有沒有可能我通過按下鍵盤上的返回而不是點擊按鈕來觸發此javascript。

注:這些輸入沒有內部形狀的標籤

+0

你想按當你在打字輸入的德文本的價值迴歸? – TeKapa 2009-12-01 16:20:07

回答

-1

這裏是完全工作的例子(FF 3.5測試),使用JS庫一樣,如果你需要更多的可移植性jQuery的火災事件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
<title>Onkeypress Test</title> 
<script language="javascript"> 
function keyDowns(event) { 
    if (event.keyCode == 13) { 
     // If you are using jQuery just write this: 
      // $('#testbutton').trigger('click'); 
      fireClickEvent(document.getElementById('testbutton')); 
    } 
} 
// Event firing is not portable 
function fireClickEvent(control) { 
    if (document.all) { 
     control.fireEvent("onclick"); 
    } else { 
     var clickEvent = window.document.createEvent("MouseEvent"); 
     clickEvent.initEvent("click", false, true); 
     control.dispatchEvent(clickEvent); 
    } 
} 
</script> 
</head> 
<body onkeydown="keyDowns(event);"> 
<input type="button" name="button" value="Test" id="testbutton" onclick="alert('Clicked to me, you can do whatever')" /> 
</body> 
</html> 
+0

輸入類型按鈕有onkeydown ????? – TeKapa 2009-12-01 16:27:27

+0

爲什麼不呢? 「onkeydown」是一個事件,如果由瀏覽器自動支持按鈕。 – 2009-12-01 16:36:07

+0

是的,但你必須專注於按鈕,然後按回車觸發它 – TeKapa 2009-12-01 16:40:12

2

好了,你可以用形式輕鬆完成(不具有實際提交):

<form onsubmit="return yourAction();"> 
    <input type="text" name="text" /> 
    <button type="submit" name="button">Button</button> 
</form> 

yourAction()

+0

他沒有形式標籤圍繞輸入文字 – TeKapa 2009-12-01 16:28:00

+0

Upvoted這個答案,因爲如果文本字段是主動控制,這也會觸發按鈕,這通常是你所期望的。此方法還可以添加服務器端按鈕點擊處理,以便您可以支持沒有JavaScript的用戶。我也相信,這個解決方案是最好的網站訪問。 – 2009-12-01 16:31:47

+0

@TeKapa:Gandalf StormCrow沒有說它不允許和/或可能添加表單標籤。我會推薦這個解決方案作爲答案。 – 2009-12-01 16:37:23

0

只是return false;你不需要你輸入按鈕。

試試這樣說:

<input type="text" name="btxt" onkeypress="submitValue(this.value)"> 

function submitValue(value) 
{ 
    var key; 

    if(event.keyCode) 
    key= event.keyCode; 
    else if(event.wich) 
    key=event.wich; 

    if(key==13) 
    callFunction(value); 
} 
+0

輸入類型=「文本」? – 2009-12-01 16:36:48

+0

是的。 然後當你輸入數值時,按回車鍵,它會調用你想要的功能 – TeKapa 2009-12-01 16:42:20

0

您需要捕獲的onkeydown事件。我不知道你想把這個活動擴展到整個網頁還是隻是一個部分?

無論如何,假設您想讓onkeydown事件發生在div標籤中的所有內容中,例如,

<div id="keyTrapper" onkeydown="trapReturn(event);"> 
    <input type="text" name="myText" id="myText" /> 
    <input type="button" name="button" id="myButton" onclick="alert(&quot;Clicked!&quot;);" /> 
</div> 

你需要JavaScript函數是:

function trapReturn(event) { 
     if (event.keyCode == 13) { 
      var myButton = document.getElementById("myButton"); 
      myButton.click(); 
     } 
    }