Safari中的.click()事件与实际点击不同

时间:2012-10-23 20:08:31

标签: javascript jquery asp.net safari

当用户从文本框中按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函数被点击(警报显示)。

这有什么原因吗?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

可以通过对象方法完成:

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

var id = "<%= lbSearch.ClientID %>";
RaiseClickEvent(id);