1

当用户从文本框中按下 Enter 时,我试图触发按钮的单击事件。这是我的代码:

<script type="text/javascript" language="javascript">

    $(document).ready(function () {
        $("#<%= txtSearch.ClientID %>").keypress(function (e) {
            if (e.keyCode == 13) { 
                alert("Hello");   
                $("#<%= lbSearch.ClientID %>").click();
            }
        });
    });

</script>

<asp:TextBox ID="txtSearch" runat="server" />
<asp:LinkButton ID="lbSearch" runat="server" onclick="lbSearch_Click" />

我所有的点击事件都会重定向到不同的页面。

当我单击按钮时,它可以工作。当我从 IE、Firefox 或 Chrome 的文本框中按 Enter 键时,它可以工作。

但是当我在 Safari 中按 Enter 时,页面只是执行回发,即使 jQuery 函数被命中(警报显示)。

这有什么原因吗?

4

2 回答 2

6

e.preventDefault();确定是回车键后需要运行。否则,表单会在 javascript 有机会完成运行之前发布。

于 2012-10-23T20:11:05.477 回答
1

可以通过对象方法完成:

function RaiseClickEvent(id) {
  var clickObject = {
    click : document.getElementById(id).onclick
  };
  clickObject.click();
}

var id = "<%= lbSearch.ClientID %>";
RaiseClickEvent(id);
于 2016-02-11T21:43:19.283 回答