2012-07-26 37 views
0

此功能在Internet Explorer和Firefox中不起作用。在Firefox中,它返回以下錯誤:回車在Internet Explorer和Firefox中不起作用

TypeError: e is undefined
[Break On This Error]
...e.which == "number") ? e.which : e.keyCode; keyCodeEntered = (e.which) ? e.which...

功能:

function onSearchPhraseKeyDown(e) { 
    var buttonId = '<%=SearchButton.ClientID %>'; 
     if (!e) 
      var e = (typeof e.which == "number") ? e.which : e.keyCode; 
     keyCodeEntered = (e.which) ? e.which : window.event.keyCode; 

     if ((keyCodeEntered == 13) || (keyCodeEntered == 13)) { 
      document.getElementById(buttonId).click(); 
      return false; 
     } else { 
      return true; 
     } 
} 

任何人都可以看看有什麼不對嗎?

+2

什麼代碼調用此?你能告訴我們你的頁面的一個片段嗎? – 2012-07-26 04:22:34

+0

這是調用按鈕點擊搜索時,我按下輸入在Firefox和Internet Explorer它不會工作。 – 2012-07-26 04:25:19

+0

是的,讓我看看你有onkeypress/onkeydown的標籤 – 2012-07-26 04:33:53

回答

2

試試這個代碼:

function onSearchPhraseKeyDown(e) { 
    var buttonId = '<%=SearchButton.ClientID %>'; 
    var e = e || event; 
    var key = e.keyCode || e.which; 
    if (key===13) { 
     document.getElementById(buttonId).click(); 
     return false; 
    } 
} 

如果使用return false取消此事件的默認行爲,我建議你使用e.preventDefault()代替,就像這樣:

if (key===13) { 
    document.getElementById(buttonId).click(); 
    e.preventDefault(); 
} 
+0

奇怪...你從哪裏調用這個函數?你是否傳遞任何參數? – 2012-07-26 04:47:09

+0

我從後面的代碼調用此函數,如下所示 string handleEnterScript = String.Format(「return onSearchPhraseKeyDown()」); SearchPhrase.Attributes.Add(「onkeydown」,handleEnterScript); ,我沒有傳遞任何參數。 – 2012-07-26 04:50:16

+0

嗯,這就是爲什麼不工作。我寫的這個函數被叫做像keydown這樣的事件。試試'myField.onkeydown = onSearchPhraseKeyDown' – 2012-07-26 05:01:47

0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Generator" CONTENT="EditPlus"> 
<META NAME="Author" CONTENT=""> 
<META NAME="Keywords" CONTENT=""> 
<META NAME="Description" CONTENT=""> 
</HEAD> 
<script> 
function checkEnter(event) { 
if(event && event.which && event.which == 13) { 

    alert("enter pressed"); 
}else if(event && event.keyCode && event.keyCode == 13) { 

    alert("enter pressed"); 

} 
return true; 
} 
</script> 
<BODY > 
<div contenteditable id="temp" style ="height:220px;background:white;width:545px;text-align:left;overflow:auto;margin:0px;border:solid 1px #999999;font-family:Arial;font-size: 10pt;color: black;" onKeyPress="return checkEnter(event)"> 

</BODY> 
</HTML> 

請試試

+0

不工作在Firefox中,但在Internet Explorer和Chrome中完美工作,請你爲它修復它。 – 2012-07-26 04:46:04

0

這裏是另一個選項,基於我認爲你正在嘗試完成的內容:

如果您嘗試在用戶在某些輸入字段中按Enter鍵時進行表單回發,則可以使用某個輸入字段的DefaultButton屬性面板控件或HtmlForm。下面是使用HtmlForm.DefaultButton屬性的示例:

Default.aspx的

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server" defaultbutton="SubmitButton"> 
    <div> 
     <asp:TextBox ID="InputTextBox" runat="server" /> 
     <asp:Button ID="SubmitButton" runat="server" Text="Submit" /> 
     <asp:Label ID="InputValue" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 

Default.aspx.vb

Partial Class _Default 
    Inherits System.Web.UI.Page 

    Protected Sub SubmitButton_Click(sender As Object, e As System.EventArgs) Handles SubmitButton.Click 
     InputValue.Text = InputTextBox.Text 
    End Sub 
End Class 

運行這個例子中,標籤將包含將文本框的值作爲證明回發發生的簡單方法。這種方法有幾點需要注意,即DefaultButton屬性的目標必須是Button或ImageButton。 LinkBut​​ton不被允許。在下面的鏈接更多信息:

system.web.ui.webcontrols.panel.defaultbutton

system.web.ui.htmlcontrols.htmlform.defaultbutton

相關問題