![](/img/trans.png)
[英]Chrome: On pressing Enter on a Textbox of a <form> Submits page without calling onClick of submit button on that form
[英]Pressing enter inside a textbox does not fire onclick event of submit button in firefox
我有這個非常簡單的html頁面,它包含一個文本框和一個提交按鈕,我想要的是在文本框中鍵入內容並按下按鈕的onclick事件中的輸入函數被調用。 它在IE和谷歌Chrome中工作但不在FireFox中工作,這是FireFox的正常行為還是在這里缺少一些東西?
<html>
<head>
<script language="javascript">
function callMe()
{
alert("You entered: " + document.getElementById("txt").value);
}
</script>
</head>
<body>
<input type="text" id="txt" />
<input type="submit" value="Submit" onclick="callMe()" />
</body>
</html>
單擊指向設備按鈕時會發生
onclick
事件。 此屬性可用於大多數元素。
即使不使用指點設備並點擊某些內容,也無法保證UA應該生成此類事件。
您可能希望在表單上使用onsubmit
事件:
提交表單時會發生
onsubmit
事件。 它僅適用於FORM
元素。
但是,您需要在文本字段和按鈕周圍包裝表單:
<html>
<head>
<script language="javascript">
function callMe()
{
alert("You entered: " + document.getElementById("txt").value);
}
</script>
</head>
<body>
<form onsubmit="callMe()" action="#">
<input type="text" id="txt" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
嘗試添加帶有onsubmit的表單 - 這應該可行(使用FF 3.5測試):
<html>
<head>
<script language="javascript">
function callMe()
{
alert("You entered: " + document.getElementById("txt").value);
}
</script>
</head>
<body>
<form onsubmit="callMe()">
<input type="text" id="txt" />
<input type="submit" value="Submit" />
</form>
</body>
</html>
[編輯最初我誤解了這種情況並發布了不同的答案。]
在我的Chrome中也不起作用(4.0.223.11)。
問題是在沒有<form>的情況下處理<input>的區別 - 如果你添加一個封閉的<form>元素,onclick元素會觸發(你應該仍然使用表單的提交處理程序,正如JohannesRössel正確推薦的那樣)。
[編輯添加了關於HTML5的說明]
請注意, HTML5規范提到在提交按鈕上調度click事件 :
用戶代理可以在每個表單中建立一個按鈕作為表單的默認按鈕。 這應該是樹形順序中的第一個提交按鈕,其表單所有者是該表單元素,但如果另一個按鈕更適合該平台,則用戶代理可以選擇另一個按鈕。 如果平台支持讓用戶隱式提交表單(例如,在某些平台上按下“enter”鍵,而文本字段被聚焦時隱式提交表單),那么這樣做必須導致表單的默認按鈕的激活行為,如果有的話,要運行。
請注意,不需要實現基於Enter的激活(盡管它是在桌面瀏覽器中實現的),並且當輸入是表單的一部分時,可以使用“激活方法”(click事件)(“具有表單所有者” )。 “表單所有者”的定義基於具有<form>父級或form
屬性。
我沒有看到導致這個決定的討論,所以如果你有問題,你可以在public-html郵件列表上詢問討論規范的地方。
據我所知,你不能在'TextBox'中調用'OnClick'。 它必須在TextBox之外。
如果您在TextBox中鍵入文本,鼠標左鍵單擊頁面上的其他位置,然后按Enter鍵,OnClick事件將起作用,奇怪的是。
如果您找到解決方法,請告訴我們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.