0

この機能は、InternetExplorerおよびFirefoxでは機能しません。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;
        }
}

誰かが何が悪いのかわかりますか?

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>

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

于 2012-07-26T05:02:42.927 に答える