0

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

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

功能:

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;
        }
}

任何人都可以看到有什么问题吗?

4

3 回答 3

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();
}
于 2012-07-26T04:27:41.753 回答
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>

请试试这个

于 2012-07-26T04:33:29.703 回答
0

这是基于我认为您要完成的任务的另一种选择:

如果您尝试在用户在某些输入字段中按 Enter 时进行表单回发,则可以使用面板控件或 HtmlForm 的 DefaultButton 属性。这是使用 HtmlForm.DefaultButton 属性的示例:

默认.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>

默认.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。不允许使用链接按钮。更多信息在以下链接:

system.web.ui.webcontrols.panel.defaultbutton

system.web.ui.htmlcontrols.htmlform.defaultbutton

于 2012-07-26T05:02:42.927 回答