【问题标题】:Simulating Button click in javascript在javascript中模拟按钮点击
【发布时间】:2013-01-28 19:10:03
【问题描述】:

所以我想要做的是当我点击一个按钮时,它将这个点击事件传递给网页中的另一个元素,或者你可以说它会在另一个元素中创建一个新的点击事件。下面是我的代码,它不起作用,请告诉我它有什么问题,看起来很有意义......

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<script>
$(function() {
$( "#datepicker" ).datepicker();
});



</script>
</head>
<body>
<p>Date: <input type="text" id="datepicker" onClick=alert("error") /></p>
<button type="button" value="submit" onClick="document.getElementById("datepicker").click()">submit </button>
</body>
</html>

【问题讨论】:

标签: javascript


【解决方案1】:

由于您使用的是 jQuery,因此您可以使用调用 click 的 onClick 处理程序:

$("#datepicker").click()

这与$("#datepicker").trigger("click") 相同。

如需无 jQuery 版本,请查看this answer on SO

【讨论】:

    【解决方案2】:

    要模拟事件,您可以使用trigger JQuery 功能。

    $('#foo').on('click', function() {
          alert($(this).text());
        });
    $('#foo').trigger('click');
    

    【讨论】:

    • 看起来像这样?

      日期:

    • 可以,但您应该避免使用内联 javascript。
    【解决方案3】:

    解决这个问题的最小改变就是改变

    onClick="document.getElementById("datepicker").click()">
    

    onClick="$('#datepicker').click()">
    

    click() 是一个 jQuery 方法。此外,用于 HTML 元素属性的双引号与用于 JavaScript 函数参数的双引号之间存在冲突。

    【讨论】:

      【解决方案4】:

      您的代码没有按您预期的方式运行的原因是因为这行:

      <button type="button" value="submit" onClick="document.getElementById("datepicker").click()">submit </button>
      

      应该改为:

      <button type="button" value="submit" onClick="document.getElementById('datepicker').focus()">submit </button>
      

      这里有两点需要注意:

      1:datepicker 周围的 "s 已更改为 's,这样它们就不会干扰 onclick 事件周围的引号。

      2:click() 已更改为 focus() 以激活日期选择器日历。按下按钮时。

      现在,这解决了您的问题……但我同意其他帖子使用 jQuery 访问 DOM 元素并触发事件是更好的方法。由于您已经通过&lt;script src="http://code.jquery.com/jquery-1.8.3.js"&gt;&lt;/script&gt; 为 jQuery datapicker 插件执行此操作,因此这应该不是问题。

      不推荐内联事件。

      【讨论】:

        【解决方案5】:

        或者您可以使用 JQuery 已经为您制作的内容:

        http://jqueryui.com/datepicker/#icon-trigger

        这不是你想要达到的目标吗?

        【讨论】:

          【解决方案6】:

          试试这个

          document.getElementById("datapicker").addEventListener("submit", function())
          

          【讨论】:

            【解决方案7】:

            使用这个

            jQuery("input.second").trigger("click");
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-06-28
              • 2012-12-16
              • 2016-07-18
              • 1970-01-01
              • 2016-06-14
              • 2020-06-07
              • 2016-11-25
              • 1970-01-01
              相关资源
              最近更新 更多