2013-06-11 2 views
1

jquery 탭을 사용하고 onclick 함수를 사용하려하지만 실행되지 않는 것 같습니다. 사용자가 탭을 클릭하고 detailview 모드를 읽기 전용 모드로 변경하려고합니다. 나는 포스트 팩이 발생할 때 선택한 탭을 유지 pageto 강제로이 코드를 사용하고asp.net에서 jquery 탭을 사용하는 OnClick 함수

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

하고 그것을 잘 작동합니다 :

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

여기에 코드 뒤에 다음은 영문 내 코드입니다.

<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.ChangeMode'가 데이터베이스 업데이트 나 비슷한 것을 수행하지 않는 한, 서버 측의'DV_Test'에 대한 변경 사항은 페이지에서 볼 수있는 것에 영향을 미치지 않습니다 (그리고 지속되지 않을 수도 있습니다). –

답변

0

태그 및 구문 때문에 ASP.NET C#을 사용한다고 가정합니다. 다음 옵션을 제안 할 수 있습니다 : Razor view을 사용하거나 이미 사용중인 JavaScript/jQuery를 사용하십시오.

면도기보기를 사용하려면 this question의 참조를 확인하고 @ 기호를 사용하여 서버 기능을 호출하십시오. 이 경우 @ChangeMode이 귀하가 찾고있는 것입니다.

jQuery를 사용하고 있으므로 이미 jQuery .click()을 사용하여 JavaScript 함수를 작성하는 것이 좋습니다. JavaScript와 jQuery가 모두 서버를 호출 할 수 있으므로 서버 측 함수 인 ChangeMode에 액세스 할 수 있습니다.

나는 JQuery와 아약스를 발견했습니다() 매우 유용 호출이 무엇 내입니다 :

link

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

fiddle


Ajax 호출을 참조하십시오. 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로는 ul/lia이 탭을 만들기 위해 사용 here를 발견하려고 그들 자신. 동작을 유발하는 것은 일반적으로 a입니다.

+0

고마워, 나는 시도했지만 전혀 발사하지 않았다. 나는이 $ ("# target")을 보여 주려고 시도했다. (function() {alert (".click() 호출 핸들러.");}); 그것이 작동하지 않았다 – moe

+0

면도기 뷰가 있습니까? 또한 ASP.NET Web Forms 또는 ASP.NET MVC를 사용하고 있습니까? Razor View를 사용하여 답변을 작성할 수 있지만 사용중인 기술이 확실하지 않습니다. – RoyalleBlue

+0

당신은 [이 바이올린] (http://jsfiddle.net/RoyalleBlue/2ku84/2/)을 포크하고 시도하여 문제를 격리 할 수 ​​있습니다. – RoyalleBlue