如何防止触发另一个按钮

时间:2014-12-02 17:27:43

标签: c# jquery html asp.net

我在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代码以确保不会发生或添加代码隐藏以确保仅在imgGo文本框具有的pageLink文本框时按下输入按钮才会触发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.

我收到以下错误:

placeholder

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

相同的替代版本。

在任何标签上注册为活动:

 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中。