Javascript 仅当光标位于输入字段中时才禁用enter键回发

Javascript 仅当光标位于输入字段中时才禁用enter键回发,javascript,asp.net,vb.net,dialogflow-es,Javascript,Asp.net,Vb.net,Dialogflow Es,我正在使用一个用户控件来显示Dialogflow的聊天框,我希望enter将框中输入的字符串提交给JavaScript事件,而不是代码隐藏。我希望能够将此用户控件添加到我的任何.net页面中,这些页面包含自己的按钮和输入。不幸的是,这个要求使我无法采取简单的方法并禁用表单中的enter键提交行为 以下是控件的HTML: <div id="mainWrapper"> <div id="result"> </div> <div id

我正在使用一个用户控件来显示Dialogflow的聊天框,我希望enter将框中输入的字符串提交给JavaScript事件,而不是代码隐藏。我希望能够将此用户控件添加到我的任何.net页面中,这些页面包含自己的按钮和输入。不幸的是,这个要求使我无法采取简单的方法并禁用表单中的enter键提交行为

以下是控件的HTML:

<div id="mainWrapper">
    <div id="result">

    </div>
    <div id="inputField">
        <input placeholder="Ask me a question" id="query" type="text" />
    </div>
    <asp:HiddenField ID="access" runat="server" />
</div>

当光标位于文本框中时,如何防止enter键触发回发,而不对页面上的其他asp.net控件执行相同操作?

这可能不是唯一的问题,我注意到您在查找元素ID时没有遵循您的模式:

queryInput = document.getElementById("<%= query.ClientID %>");
resultDiv = document.getElementById("<%= result.ClientID %>");

我刚刚将您提供的代码添加到函数中,它似乎没有停止回发。它应该是事件。不是e,因为您使用事件作为参数…我更新了它…我还建议您将init函数放到底部我添加了一个概念,这样您就可以看到在操作中…显然在我的提琴中,我不能使用asp.net客户端id或自定义函数-
queryInput = document.getElementById("<%= query.ClientID %>");
resultDiv = document.getElementById("<%= result.ClientID %>");
function keyDown(event) {
    if (event.which === ENTER_KEY_PRESS) {
        console.log("Enter pressed")
        var queryValue = queryInput.value;
        queryInput.value = "";

        sendTextToDIalogflow(value)
            .then(function (response) {
                var result;
                try {
                    result = response.result.fulfillment.speech;
                } catch (error) {
                    result = "error: " + error.message;
                }
                console.log(result)
            })
            .catch(function (err) {
                console.log("Whoops, something went wrong: " + err.message);
            });

         // ADDED CODE
         // REFERENCE - https://stackoverflow.com/questions/1639338/why-does-returning-false-in-they-keydown-callback-does-not-stop-the-button-click
         if (event.preventDefault) {
             event.preventDefault();
         } else {
             event.returnValue = false;
         }
         // END ADDED CODE
    }
    else {
        console.log("Enter not pressed")
    }
}