为什么这不起作用?
<script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.myButton').click();
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:LinkButton id="ttt" runat="server" PostBackUrl="~/Default.aspx" CssClass="myButton">Click</asp:LinkButton>
</div>
</form>
答案 0 :(得分:37)
您要提交表单,还是添加Click事件? 您的链接按钮转换为
<a id="ttt" class="myButton" href="javascript:WebForm_DoPos[...]">Click</a>
,所以它没有点击式javascript。因此,.click();
什么都不做
我没有测试过,但也许这会起作用:
eval($('.myButton').attr('href'));
答案 1 :(得分:11)
trigger('click')触发jQuery的click事件监听器,.NET没有连接到它。您可以触发javascript click事件,该事件将转到(或在此情况下运行)href属性中的内容:
$('.myButton')[0].click();
或
($('.myButton').length ? $('.myButton') : $('<a/>'))[0].click();
如果您不确定该按钮是否会出现在页面上。
乔
答案 2 :(得分:3)
如果需要触发linkbutton的OnClick服务器端事件,则需要使用__doPostback(eventTarget,eventArgument)。
例如:
<asp:LinkButton ID="btnMyButton" runat="Server" OnClick="Button_Click" />
<script type="text/javascript">
function onMyClientClick(){
//do some client side stuff
//'click' the link button, form will post, Button_Click will fire on back-end
//that's two underscores
__doPostBack('<%=btnMyButton.UniqueID%>', ''); //the second parameter is required and superfluous, just use blank
}
</script>
答案 3 :(得分:1)
您需要指定一个事件处理程序,以便在引发click事件时触发
$(document).ready(function() {
$('.myButton', '#form1')
.click(function() {
/*
Your code to run when Click event is raised.
In this case, something like window.location = "http://..."
This can be an anonymous or named function
*/
return false; // This is required as you have set a PostbackUrl
// on the LinkButton which will post the form
// to the specified URL
});
});
我已经使用ASP.NET 3.5对上述内容进行了测试,并且按预期工作。
Linkbutton上还有OnClientClick
属性,它指定在引发click事件时运行的客户端脚本。
我可以问你想要达到的目标吗?
答案 4 :(得分:0)
click事件处理程序必须实际执行操作。试试这个:
$(function () {
$('.myButton').click(function () { alert('Hello!'); });
});
答案 5 :(得分:0)
你需要给linkButton一个CssClass =“myButton”然后在顶部使用它
$(document).ready(function() {
$('.myButton').click(function(){
alert("hello thar");
});
});
答案 6 :(得分:0)
这是一个艰难的。据我了解,你想模仿点击javascript代码中的按钮的行为。问题是ASP.NET在onclick处理程序中添加了一些花哨的javascript代码。
在jQuery中手动触发事件时,只会执行jQuery添加的事件代码,而不是onclick属性或href属性中的javascript。因此,我们的想法是创建一个新的事件处理程序,它将执行属性中定义的原始javascript。
我要提出的建议尚未经过测试,但我会试一试:
$(document).ready(function() {
// redefine the event
$(".myButton").click(function() {
var href = $(this).attr("href");
if (href.substr(0,10) == "javascript:") {
new Function(href.substr(10)).call(this);
// this will make sure that "this" is
// correctly set when evaluating the javascript
// code
} else {
window.location = href;
}
return false;
});
// this will fire the click:
$(".myButton").click();
});
答案 7 :(得分:0)
只是澄清一下,只有FireFox会遇到这个问题。见http://www.devtoolshed.com/content/fix-firefox-click-event-issue。在FireFox中,anchor(a)标签没有click()函数,允许JavaScript代码直接模拟它们上的点击事件。他们执行允许您映射锚标记的点击事件,而不是使用click()函数进行模拟。
幸运的是,ASP.NET将JavaScript回发代码放入href属性中,您可以在其中获取它并在其上运行eval。 (或者只是调用window.location.href = document.GetElementById('LinkButton1')。href;)。
或者,您可以调用__doPostBack('LinkButton1');请注意,“LinkButton1”应该由LinkButton的ClientID / UniqueID替换,以处理命名容器,例如: UserControls,MasterPages等
Jordan Rieger