【问题标题】:.click() event in Safari different than actual clickSafari 中的 .click() 事件与实际点击不同
【发布时间】:2016-02-12 05:43:19
【问题描述】:

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

有什么原因吗?

【问题讨论】:

  • 这样做有什么作用? $(function(){ $("#&lt;%= lbSearch.ClientID %&gt;").click(); });
  • @KevinB - 它在除 Safari 之外的所有浏览器中触发点击事件,出于某种原因,它只是执行回发
  • ...这很奇怪。除非您在导致回发的点击上有处理程序,否则 js 触发的点击不应进行回发。

标签: javascript jquery asp.net safari


【解决方案1】:

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

【讨论】:

  • 我在提醒之前添加了它。现在警报显示,但页面根本不回发或重定向。它似乎在识别我按 Enter 键,但它没有执行点击事件。
  • @Steven 试试$(...).trigger('click')
  • @JanDvorak - 不幸的是,同样的结果,警报显示,然后什么也没发生。
  • @Steven 我之前解决了一个类似的问题,最终手动执行了默认操作。
【解决方案2】:

可以通过对象方法来完成:

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

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

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多