2017-04-19 14 views
0

我有這個jQuery的功能:jQuery函數不是從C#代碼調用

<script> 
    function tabSelected() { 
     //alert('tab.'); 
     $('.nav-tabs li:eq(3) a').tab('show'); 
    }; 
</script> 

這個功能是從後面的代碼名爲:

ScriptManager.RegisterClientScriptBlock(this, typeof(string), "script", "tabSelected()", true); 

或:

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "tabSelected()", true); 

沒有它作品。應該在c#方法「ValidateData」中調用jquery:

private bool ValidateData() 
    { 
     try 
     { 
      if (ddlStatusOp.SelectedIndex <= 0) 
      { 
       ScriptManager.RegisterClientScriptBlock(this, typeof(string), "script", "tabSelected()", true); 

       throw new Exception("'Status' must be selected."); 
      } 

      return true; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

我在做什麼錯?

+0

可能沒有閱讀http://stackoverflow.com/help/mcve –

+0

它不起作用?如果您取消註釋,警報是否會觸發? F12控制檯是否有任何錯誤? –

+0

不相關的,但如果你重新拋出同樣的異常,你通常只想'throw;',而不是'throw ex;' - 它會保留現有的堆棧跟蹤等。 –

回答

0

首先,檢查你有一個jQuery的參考這樣在HTML的你部分:

<script src="https://code.jquery.com/jquery-1.12.4.min.js" ></script> 

後改變你的腳本是:

<script> 
    function tabSelected() { 
     $(document).ready(function(){ 
      $('.nav-tabs li:eq(3) a').tab('show'); 
     }); 
    }; 
</script> 
+0

感謝@Majid,它正在使用$(document).ready(function()... – pabloss

0

對不起,這裏是代碼:

<ul class="nav nav-tabs" id="tabContainer"> 
<li class="active"><a data-toggle="tab" href="#tabMenu1">Menu 1</a></li> 
<li><a data-toggle="tab" href="#tabMenu2">Menu 2</a></li> 
<li><a data-toggle="tab" href="#tabMenu3">Menu 3</a></li> 
<li><a data-toggle="tab" href="#tabMenu4">Menu 4</a></li> 
<li><a data-toggle="tab" href="#tabMenu5">Menu 5</a></li> 
<li><a data-toggle="tab" href="#tabMenu6">Menu 6</a></li> 

<div class="tab-content"> 
<div id="tabMenu1" class="tab-pane fade in active"> 
    <h2>Menu 1</h2> 
</div> 
<div id="tabMenu2" class="tab-pane fade"> 
    <h2>Menu 2</h2> 
</div> 
<div id="tabMenu3" class="tab-pane fade"> 
    <h2>Menu 3</h2> 
</div> 
<div id="tabMenu4" class="tab-pane fade"> 
    <h2>Menu 4</h2> 
</div> 
<div id="tabMenu5" class="tab-pane fade"> 
    <h2>Menu 5</h2> 
</div> 
<div id="tabMenu6" class="tab-pane fade"> 
    <h2>Menu 6</h2> 
</div> 

是,警報並沒有在射擊,但是我設法解決函數調用,問題在「;」 (分號)在「tabSelected()」之後的c#行中;以下是正確的:

ScriptManager.RegisterClientScriptBlock(this, typeof(string), "script", "tabSelected();", true); 

現在警報工作,但使用jQuery選擇選項卡不工作:

$('.nav-tabs li:eq(3) a').tab('show'); 

任何幫助表示讚賞。