35

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

<!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>
4

7 回答 7

54

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

$("#datepicker").click()

这与$("#datepicker").trigger("click").

对于无 jQuery 版本,请查看SO 上的这个答案

于 2013-01-28T19:11:24.407 回答
10

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

$('#foo').on('click', function() {
      alert($(this).text());
    });
$('#foo').trigger('click');
于 2013-01-28T19:11:23.423 回答
9

解决此问题的最小更改是更改

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

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

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

于 2013-01-28T19:12:53.583 回答
2

您的代码无法按您期望的方式运行的原因是因为这一行:

<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:"周围的 sdatepicker已更改为's,这样它们就不会干扰onclick事件周围的报价。

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

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

不推荐内联事件。

于 2013-01-28T19:31:07.073 回答
1

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

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

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

于 2013-01-28T19:19:26.010 回答
0

试试这个

document.getElementById("datapicker").addEventListener("submit", function())
于 2013-01-28T19:22:28.763 回答
0

用这个

jQuery("input.second").trigger("click");
于 2017-05-30T11:07:37.690 回答