2014-12-02 23 views
2

我有我的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属性对我来说很重要。

+1

其他面板中的搜索按钮是否具有'imgGo'类?我注意到你正在通过jQuery来定位'.imgGo'。这将触发任何匹配元素的事件,您可能想要基于唯一的'id'来代替。 – DGibbs 2014-12-02 17:30:26

+0

'imgGo'仅用于此实例。 – SearchForKnowledge 2014-12-02 17:37:03

+0

你的错误信息有点奇怪''pnlMedSearch'的DefaultButton必须是IButtonControl类型的控件的ID。你想使用标签作为默认按钮吗?在你的HTML示例中,你已经将默认按钮设置为“GoImg”,那么为什么不只是将''添加到ID为'GoImg'的面板呢?这应该工作... – DGibbs 2014-12-03 09:16:32

回答

2

我保持相同的HTML内容,并修改了我的Jquery以下几点:

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

添加return false;确保它没有援引任何页面上的其他人。

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作为well.You可以简单地把它添加到一个asp:例如文本框。

+0

感谢您的回应。 – SearchForKnowledge 2015-01-20 13:59:20

相关问题