2015-06-30 42 views
2

當javascript返回false時,onclick不起作用。我需要javascript才能返回false以便爲按鈕設置動畫效果。如果我返回true,那麼onClick的作品,但動畫不起作用。我曾嘗試做__doPostBack和UseSubmitBehaviour,但似乎沒有任何工作。任何幫助將非常讚賞如何解決這個問題。如何在javascript返回false時使onclick觸發

代碼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; 
} 
+0

嘗試使用MVC.NET並獲得更好的客戶端/服務器行爲耦合。相比之下,在ASPX客戶端和服務器實際上是兩個不同的世界。 –

回答

2

你不應該檢查在單擊事件處理文檔準備事件。另外,當有人點擊鏈接時,您正在調用fncsave函數,但在該函數內您正在使用id列表訂閱另一個事件(單擊)。 如果我理解正確的話,你應該這樣做:

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

正如一個評論,「返回false」意味着它不會再繼續進行事件處理,這是提交表單的正常流動。

如果返回true,表單將被提交。這意味着表單數據被髮送到服務器並執行C#代碼。然後,頁面完全重新加載(從頭開始)。在這種情況下,動畫沒有任何意義,您需要AJAX在C#代碼運行時執行動畫。請參閱本教程中關於AJAX(Tutorial about AJAX)。

+0

這很有道理,但OnClick仍然不起作用。我不怎麼做這個工作。 – beginnerCoder

+0

OnClick是服務器端的事件處理程序,只有在JS函數返回true時纔會執行(做回發)。如果您需要執行JS代碼和C#代碼,則返回true而不是false。考慮到該頁面將被提交。 –

+0

所以,我在fncsave()中寫入__doPostBack()還是在OnClientClick()中寫入? – beginnerCoder

0

嘗試這樣

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

不幸的是,由於它仍然返回false,它不會觸發OnClick事件。 – beginnerCoder

+0

所以你可以改變它爲真 –

+0

如果我改變它爲true,那麼動畫不起作用 – beginnerCoder

0

我有一個默認的「動畫」變量是假的。如果點擊按鈕,檢查動畫是否爲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> 

希望得到這個幫助。

0

這應該做你想做的。

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

它會延遲迴發,直到動畫完成。另一種方法是使用更新面板,以避免後續的動畫後閃爍。

相關問題