如何防止触发另一个按钮

本文关键字:另一个 按钮 何防止 | 更新日期: 2023-09-27 18:32:59

我的 ASP.net 页面中有以下内容:

<input type="text" placeholder="Search..." size="30" id="pageLink" />
<br />
<span id="imgGo" class="imgGo floatRight"></span>

JQuery:

$('.imgGo').click(function () {
    var strString = $("#pageLink").val()
    var strSearch = "http://www.google.com/search=";
    var url = strSearch + strString;
    window.open(url, '_blank');
    return false;
});
$("#pageLink").keyup(function (event) {
    if (event.keyCode == 13 || event.which == 13) {
        $(".imgGo").click();
    }
});

当我在文本框中输入内容并单击imgGo范围时,它可以正常工作,但是如果我按回车键,则会触发另一个面板中的搜索按钮。

如何修改我的 JQuery 代码以确保不会发生这种情况,或者添加代码隐藏以确保仅在pageLink文本框具有焦点时按下 Enter 按钮时才触发imgGo

我尝试了以下方法imgGo但没有工作,因为它不是按钮:

<asp:Panel ID="pnlMedSearch" runat="server" DefaultButton="GoImg">
    <!--<input type="text" placeholder="Search..." size="30" id="p2" />-->
    <asp:TextBox Width="30" ID="pageLink" runat="server" />
    <br />
    <!--<span id="imgGo" class="imgGo floatRight"></span>-->
    <asp:Label ID="imgGo" CssClass="imgGo floatRight" runat="server" />
</asp:Panel>

我收到以下错误:

The DefaultButton of 'pnlMedSearch' must be the ID of a control of type IButtonControl.

我想使用不是 ASP.net 控件的文本框,因为 placeholder 属性在我的情况下很重要。

如何防止触发另一个按钮

我保留了相同的HTML内容,并将我的Jquery修改为以下内容:

$("#medlineSearch").keypress(function (event) {
        if (event.which == 13) {
            $("#imgGo").click();
            return false;
        }
    });

添加return false;确保它不会调用页面上的任何其他内容。

相同版本的替代版本。

在任何标签上注册为事件:

 onkeydown="pressButtonOnEnter('IdOfMyButton', event);" 

进入.js文件:

function pressButtonOnEnter(buttonId, event) {
    var key = (evt.which) ? evt.which : evt.keyCode;
    if (key == 13) {
        $("#" + buttonId).click();
    }
}

它也适用于 asp.net。例如,您可以简单地将其添加到asp:textbox中。