Asp.net LinkButton不会在单击时调用()
为什么这样不行Asp.net LinkButton不会在单击时调用(),asp.net,jquery,Asp.net,Jquery,为什么这样不行 <script src="Scripts/jquery-1.3.2.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { $('.myButton').click(); }); </script> </h
<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>
$(文档).ready(函数(){
$('.myButton')。单击();
});
点击
您需要指定一个事件处理程序,以便在引发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.NET3.5测试了上述内容,它的工作原理与预期相符
Linkbutton上还有一个属性,指定在引发click事件时要运行的客户端脚本
我可以问一下您想要实现什么吗?单击事件处理程序必须实际执行一个操作。试试这个:
$(function () {
$('.myButton').click(function () { alert('Hello!'); });
});
您需要给linkButton一个CssClass=“myButton”,然后在顶部使用它
$(document).ready(function() {
$('.myButton').click(function(){
alert("hello thar");
});
});
是否要提交表单,或添加单击事件? 您的链接按钮转换为
<a id="ttt" class="myButton" href="javascript:WebForm_DoPos[...]">Click</a>
这很难。据我所知,您希望模拟在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();
});
只是澄清一下,只有FireFox会遇到这个问题。看见在FireFox中,anchor(a)标记没有click()函数来允许JavaScript代码直接模拟它们上的单击事件。它们允许您映射锚定标记的单击事件,而不是用click()函数模拟它 幸运的是,ASP.NET将JavaScript回发代码放在href属性中,您可以从中获取代码并对其运行eval。(或者只需调用window.location.href=document.GetElementById('LinkButton1').href;) 或者,您可以直接调用uu doPostBack('LinkButton1');请注意,“LinkButton1”应替换为LinkButton的ClientID/UniqueID,以处理命名容器,例如用户控件、母版页等
Jordan Rieger如果需要触发linkbutton的OnClick服务器端事件,则需要使用_doPostback(eventTarget,eventArgument) 例:
函数onCyclientClick(){
//做一些客户端的事情
//点击链接按钮,表单将发布,点击按钮将在后端启动
//这是两个下划线
__doPostBack(“”,”);//第二个参数是必需的和多余的,只需使用blank即可
}
trigger('click')触发jQuery的click事件监听器,该监听器未连接到.NET。您只需启动javascript单击事件,该事件将转到(或在本例中运行)href属性中的内容:
$('.myButton')[0].click();
或
($('.myButton')。长度?$('.myButton'):$('')[0]。单击();
如果您不确定按钮是否会出现在页面上
Joe不,我没有ASP环境来测试它。但这肯定是一个错误。它确实有效,您需要在函数中执行一些操作。您是通过AJAX添加linkbutton还是在页面加载之后添加linkbutton?jQuery框架引用是否正确?您可以通过尝试$(document.ready(function(){alert(“Hello”);})进行测试;。click()无论如何都不会做任何事情,因为jQuery使用事件监听器而不是调整.onclick元素属性。实际上,Andrew,我测试了它只是为了确定,.click()确实启动了onclick事件。在IE7上似乎不起作用,在chrome上同样的代码也起作用。有没有人有同样的问题?不要使用eval(eval是邪恶的)-使用本机javascript click()方法-查看我的答案。编辑:Eval不好,因为它可能允许攻击者执行任意javascript。@Joe-
click()
确实有效,谢谢。不过,你可能不想真正的点击,这也可能做其他事情。我不相信“eval是邪恶的”,尤其是在这里。如果攻击者可以更改链接按钮上的href
属性,则为时已晚。
<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>
$('.myButton')[0].click();
($('.myButton').length ? $('.myButton') : $('<a/>'))[0].click();