如何在 javascript returns false 时触发 onclick
How to make onclick to fire when javascript returns false
当 javascript return 为 false 时,onclick 不起作用。我需要 javascript 到 return false 才能为按钮设置动画。如果我 return true 则 onClick 起作用但动画不起作用。我试过 __doPostBack 和 UseSubmitBehaviour 但似乎没有任何效果。对于如何解决此问题,我们将不胜感激。
asp 按钮的代码:
<asp:LinkButton id="btn_salaries" onClientClick="return fncsave();" OnClick="btn_clicked" UseSubmitBehavior="false" runat="server" type="button" class="list-group-item" Text="getCharitySalaries"/>
Javascript代码:
function fncsave(){
$(document).ready(function(){
$("#list").click(function(){
$("#list_of_btns").animate({left: '-290px'});
});
});
return false;
}
更新:
我在 ajax 中做动画,但我不知道我做的是否正确,因为它不执行动画。
下面是我的代码:
function fncsave(){
alert("dsfdsf");
$(document).ready(function(){
$(document).ajaxStart(function(){
$("#list_of_btns").animate({left: '-290px'});
}
}
return true;
}
您不应检查单击事件处理程序上的文档就绪事件。此外,当有人单击 link 时,您正在调用 fncsave 函数,但在该函数内,您正在订阅带有 id 列表的标签上的另一个事件(单击)。
如果我理解正确,你应该这样做:
function fncsave(){
$("#list_of_btns").animate({left: '-290px'});
return false;
}
正如评论一样,"return false" 意味着它不会继续正常的事件处理流程,即提交表单。
如果您 return 为真,则表单已提交。这意味着表单数据被发送到服务器并执行 C# 代码。然后,页面完全重新加载(从头开始)。在这种情况下,动画没有任何意义,您需要 AJAX 来执行动画,而 C# 代码是 运行。请参阅有关 AJAX (Tutorial about AJAX) 的教程。
这样试试
function fncsave(){
$("#list").click(function(){
$("#list_of_btns").animate({left: '-290px'},900,function(){
return false;
});
});
}
我有一个 'animated' 变量,默认为 false。如果按钮被点击,检查animated是否为false,'preventDefault()'取消提交,播放动画,'setTimeOut()'3000ms后函数,赋值animated为true,在按钮上触发'click'。这一次,动画是真实的,它 post 数据到服务器。
<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>
希望对您有所帮助。
这应该可以满足您的要求。
function fncsave(){
$("#list_of_btns").animate({left: '-290px'},900,function(){
// Do __doPostBack here
});
return false;
}
它会延迟执行 post 直到动画完成。另一种方法是使用更新面板来避免 post 后面的闪烁随动画一起出现。
当 javascript return 为 false 时,onclick 不起作用。我需要 javascript 到 return false 才能为按钮设置动画。如果我 return true 则 onClick 起作用但动画不起作用。我试过 __doPostBack 和 UseSubmitBehaviour 但似乎没有任何效果。对于如何解决此问题,我们将不胜感激。
asp 按钮的代码:
<asp:LinkButton id="btn_salaries" onClientClick="return fncsave();" OnClick="btn_clicked" UseSubmitBehavior="false" runat="server" type="button" class="list-group-item" Text="getCharitySalaries"/>
Javascript代码:
function fncsave(){
$(document).ready(function(){
$("#list").click(function(){
$("#list_of_btns").animate({left: '-290px'});
});
});
return false;
}
更新:
我在 ajax 中做动画,但我不知道我做的是否正确,因为它不执行动画。
下面是我的代码:
function fncsave(){
alert("dsfdsf");
$(document).ready(function(){
$(document).ajaxStart(function(){
$("#list_of_btns").animate({left: '-290px'});
}
}
return true;
}
您不应检查单击事件处理程序上的文档就绪事件。此外,当有人单击 link 时,您正在调用 fncsave 函数,但在该函数内,您正在订阅带有 id 列表的标签上的另一个事件(单击)。 如果我理解正确,你应该这样做:
function fncsave(){
$("#list_of_btns").animate({left: '-290px'});
return false;
}
正如评论一样,"return false" 意味着它不会继续正常的事件处理流程,即提交表单。
如果您 return 为真,则表单已提交。这意味着表单数据被发送到服务器并执行 C# 代码。然后,页面完全重新加载(从头开始)。在这种情况下,动画没有任何意义,您需要 AJAX 来执行动画,而 C# 代码是 运行。请参阅有关 AJAX (Tutorial about AJAX) 的教程。
这样试试
function fncsave(){
$("#list").click(function(){
$("#list_of_btns").animate({left: '-290px'},900,function(){
return false;
});
});
}
我有一个 'animated' 变量,默认为 false。如果按钮被点击,检查animated是否为false,'preventDefault()'取消提交,播放动画,'setTimeOut()'3000ms后函数,赋值animated为true,在按钮上触发'click'。这一次,动画是真实的,它 post 数据到服务器。
<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>
希望对您有所帮助。
这应该可以满足您的要求。
function fncsave(){
$("#list_of_btns").animate({left: '-290px'},900,function(){
// Do __doPostBack here
});
return false;
}
它会延迟执行 post 直到动画完成。另一种方法是使用更新面板来避免 post 后面的闪烁随动画一起出现。