模拟按钮点击javascript

时间:2013-01-28 19:10:04

标签: javascript

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

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

7 个答案:

答案 0 :(得分:38)

由于你使用的是jQuery,你可以使用这个调用click的onClick处理程序:

$("#datepicker").click()

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

对于免费jQuery版本,请查看this answer on SO

答案 1 :(得分:10)

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

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

答案 2 :(得分:5)

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

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

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

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

答案 3 :(得分: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:"周围的datepicker已更改为',因此它们不会干扰onclick事件周围的引号。

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

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

不建议使用内联事件。

答案 4 :(得分:1)

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

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

这是你想要实现的不是吗?

答案 5 :(得分:1)

试试这个

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

答案 6 :(得分:0)

使用此

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