2013-06-11 30 views
1

我正在使用jquery選項卡並試圖使用onclick函數,但它似乎沒有觸發。當用戶單擊選項卡,我想將詳細視圖模式更改爲只讀模式。這是我在ASPX代碼:在asp.net中使用jquery選項卡的OnClick函數

<div id="tabs-2" class="column" onclick="ChangeMode"> 

這裏隱藏代碼:

protected void ChangeMode() 
     { 
      if (DV_Test.CurrentMode == DetailsViewMode.Insert) 
      { 
       DV_Test.ChangeMode(DetailsViewMode.ReadOnly); 
       LoadDet(); 
      } 
     } 

我使用此代碼,迫使後時發生包的頁面回到停留在選定的選項卡,它工作正常。

<script type="text/javascript"> 
     var selected_tab = 1; 
     $(function() { 
      var tabs = $("#tabs").tabs({ 
       select: function (e, i) { 
        selected_tab = i.index; 

       } 
      }); 
      selected_tab = $("[id$=selected_tab]").val() != "" ? parseInt($("[id$=selected_tab]").val()) : 0; 
      tabs.tabs('select', selected_tab); 
      $("form").submit(function() { 
       $("[id$=selected_tab]").val(selected_tab); 

      }); 

     }); 
+1

缺少onclick =「ChangeMode();」 (??)它是否發射了事件? – Jose

+1

你的'div'是一個客戶端元素,但是你的函數是服務器端的。客戶端代碼沒有服務器端代碼的概念,不能直接訪問它。 – David

+1

由於您正在混合服務器端和客戶端代碼,因此這不起作用。然而,如果不知道你在這種方法中試圖達到什麼目標,就不可能糾正你。無論您對DV_Test服務器端進行的更改都不會影響您在頁面上看到的內容(並且可能不會持久化,除非'DV_Test.ChangeMode'執行數據庫更新或類似操作,請更詳細地解釋您 –

回答

0

我假設你正在使用ASP.NET C#,因爲你的標籤和語法。我可以建議這些選項:使用Razor view,或者使用您已經使用的JavaScript/jQuery。

如果您喜歡使用Razor View,請參閱this question中的參考資料,並使用@符號來調用服務器功能。在這種情況下,您正在尋找@ChangeMode

既然您已經使用jQuery,我建議您使用jQuery .click()編寫JavaScript函數。由於JavaScript和jQuery都能夠調用服務器,因此您將可以訪問服務器端功能ChangeMode

$('#tabs-2').click(function(){ 
    //Make call to server here. You can use [Ajax][4], 
    //or see the link below concerning ASP.NET C# 
}); 

link,看到這個fiddle


Ajax調用:

我發現jQuery的阿賈克斯()調用非常有用的,而且這是我的。 ajax()調用通常如下所示:

//get information from server and inject in my div with id="mydiv" 
$.ajax({ 
    url: '/ControllerName/MethodName', 
    type: 'POST', 
    data: ko.toJSON({myvariable}), 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { 
     $('#mydiv').html('visiblity', 'visible'); 
    }, 
    error: function (error) { 
     alert('Cannot retrieve data'); 
    } 
}); 

而且,我不知道你已經決定使用什麼,但我喜歡的標籤以下建議:嘗試在HTML中發現here,它採用ul/lia,使標籤他們自己。觸發動作的事件通常是a

+0

謝謝,我已經嘗試過但根本沒有開火。我試圖顯示這個$(「#target」)。click(function(){alert(「Handler for .click()called。」);});它不起作用 – moe

+0

你有Razor View嗎?另外,你使用的是ASP.NET Web Forms還是ASP.NET MVC?我可以使用Razor View給你寫一個答案,但我不確定你正在使用哪種技術。 – RoyalleBlue

+0

您可以通過派生和嘗試隔離問題[這個小提琴(http://jsfiddle.net/RoyalleBlue/2ku84/2/) – RoyalleBlue

相關問題