如何在javascript返回false时触发onclick

时间:2015-06-30 17:39:09

标签: javascript c# asp.net

当javascript返回false时,onclick不起作用。我需要javascript返回false才能为按钮设置动画。如果我返回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;
}

4 个答案:

答案 0 :(得分:2)

您不应该在click事件处理程序上检查文档就绪事件。此外,当有人点击您正在调用fncsave函数的链接时,但在该函数内,您正在订阅带有id列表的标签上的另一个事件(单击)。 如果我理解正确,你应该这样做:

function fncsave(){
        $("#list_of_btns").animate({left: '-290px'});
        return false;
    }

正如评论一样,“return false”意味着它不会继续正常的事件处理流程,即提交表单。

如果您返回true,则表单已提交。这意味着表单数据被发送到服务器并执行C#代码。然后,页面如果完全重新加载(从头开始)。在这种情况下,动画没有意义,在C#代码运行时你需要AJAX来执行动画。请参阅本教程关于AJAX(Tutorial about AJAX)。

答案 1 :(得分:0)

试试这个

 function fncsave(){
        $("#list").click(function(){
             $("#list_of_btns").animate({left: '-290px'},900,function(){
                    return false;
               });
          });
        }

答案 2 :(得分:0)

我有动画&#39;默认值为false的变量。如果单击按钮,请检查动画是否为假,&#39; preventDefault()&#39;取消提交,播放动画,&#39; setTimeOut()&#39;将函数设置为3000ms后,将动画指定为true,并触发“点击”。在按钮上。这一次,动画是真的,它将数据发布到服务器。

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

希望得到这个帮助。

答案 3 :(得分:0)

这应该做你想要的。

function fncsave(){
    $("#list_of_btns").animate({left: '-290px'},900,function(){
        // Do __doPostBack here
    });
    return false;
}

在动画完成之后,它会延迟回发。另一种方法是使用更新面板来避免跟随动画的回发闪烁。