当javascript返回false时如何使onclick触发
当javascript返回false时,onclick不起作用。我需要javascript返回false来设置按钮的动画。如果我返回true,则onClick工作,但动画不工作。我已经尝试过使用SubmitBehaviour进行PostBack和SubmitBehaviour,但似乎没有任何效果。如果您能帮我解决这个问题,我们将不胜感激 asp按钮的代码:当javascript返回false时如何使onclick触发,javascript,c#,asp.net,Javascript,C#,Asp.net,当javascript返回false时,onclick不起作用。我需要javascript返回false来设置按钮的动画。如果我返回true,则onClick工作,但动画不工作。我已经尝试过使用SubmitBehaviour进行PostBack和SubmitBehaviour,但似乎没有任何效果。如果您能帮我解决这个问题,我们将不胜感激 asp按钮的代码: <asp:LinkButton id="btn_salaries" onClientClick="return fncsave();"
<asp:LinkButton id="btn_salaries" onClientClick="return fncsave();" OnClick="btn_clicked" UseSubmitBehavior="false" runat="server" type="button" class="list-group-item" Text="getCharitySalaries"/>
更新:
我正在用ajax制作动画,但我不知道是否正确,因为它不执行动画
下面是我的代码:
function fncsave(){
alert("dsfdsf");
$(document).ready(function(){
$(document).ajaxStart(function(){
$("#list_of_btns").animate({left: '-290px'});
}
}
return true;
}
您不应该在click事件处理程序上检查document ready事件。此外,当有人单击链接时,您正在调用fncsave函数,但在该函数中,您正在订阅id标记列表上的另一个事件(单击)。 如果我理解正确,您应该这样做:
function fncsave(){
$("#list_of_btns").animate({left: '-290px'});
return false;
}
正如注释所示,“returnfalse”意味着它不会继续正常的事件处理流程,也就是提交表单
如果返回true,则提交表单。这意味着表单数据被发送到服务器并执行C#代码。然后,如果完全重新加载(从头开始),则返回页面。在这种情况下,动画没有任何意义,您需要AJAX在C代码运行时执行动画。请参阅关于AJAX()的本教程。尝试这样做
function fncsave(){
$("#list").click(function(){
$("#list_of_btns").animate({left: '-290px'},900,function(){
return false;
});
});
}
我有一个“动画”变量,默认值为false。如果单击按钮,请检查动画是否为false,'preventDefault()'取消提交,播放动画,'setTimeOut()'将在3000ms后启动该功能,将动画指定为true,并触发按钮上的'click'。这一次,动画是真的,它将数据发布到服务器
<asp:Button ID="btn_salaries" OnClick="Button_Click" runat="server" type="button" Text="getCharitySalaries" />
<br />
<script type="text/javascript">
$(document).ready(function (e) {
var animated = false;
$('#' + '<% = btn_salaries.ClientID %>').click(function (ev) {
if (!animated) {
ev.preventDefault();
$(this).animate({ left: '-290px' });
setTimeout(function () {
animated = true;
$('#' + '<% = btn_salaries.ClientID %>').trigger('click');
}, 3000);
}
});
});
</script>
$(文档).ready(函数(e){
var=false;
$('#'+'')。单击(函数(ev){
如果(!已设置动画){
ev.preventDefault();
$(this.animate({left:'-290px'});
setTimeout(函数(){
动画=真;
$('#'+'').trigger('click');
}, 3000);
}
});
});
希望对您有所帮助。这应该可以满足您的需要
function fncsave(){
$("#list_of_btns").animate({left: '-290px'},900,function(){
// Do __doPostBack here
});
return false;
}
它将延迟执行回发,直到动画完成。另一种方法是使用“更新”面板,以避免动画后面的发帖出现闪烁。这是有道理的,但OnClick仍然不起作用。我不知道如何使它工作。OnClick是服务器端的一个事件处理程序,它只在JS函数返回true(do post back)时执行。如果需要执行JS代码和C#代码,则返回true而不是false。考虑到页面将被提交。那么我是在fncsave()中写u doPostBack()还是在OnClientClick()中写?这是因为当您进行回发(在JS代码中返回true)时,表单被发送到服务器,C代码被执行,新页面被返回到客户端(从头开始重新加载页面)。你不想这样,你想在C#action运行时显示动画,对吗?在这种情况下,您需要使用AJAX。也就是说,您的JS代码将调用异步C#方法。我更新了问题中的代码,使用ajax,但动画不再工作。不幸的是,由于其仍然返回false,因此不会触发OnClick事件。因此,您可以将其更改为true如果我将其更改为true,则动画不工作尝试使用MVC.NET并获得更好的耦合客户端/服务器行为。相比之下,在ASPX中,客户机和服务器实际上是两个不同的世界。
function fncsave(){
$("#list_of_btns").animate({left: '-290px'},900,function(){
// Do __doPostBack here
});
return false;
}