2011-05-10 3 views
0

페이지에 여러 인스턴스를 포함 할 수있는 컨트롤을 처리하는 jQuery 파일이 있습니다. 각 인스턴스는 처리기 함수와 템플릿을 컨트롤에 전달해야합니다. 서버 쪽이 .net/C# 코드 스 니펫이 좋을 것입니다. 페이지 함수 또는 템플릿을 jQuery 파일에 전달합니다.

[편집]

나는이 : 제어에서

<script type="text/javascript"> 
    $("#<%=AutoSearch1.ClientID %>").bind('AutoSearch_Changed', function (e, data) { 
     if (data == "") { 
      $('#<%=cbUntilOnDate.ClientID %>').attr("checked", true); 
      $('#<%=cbUntilEndofProgram.ClientID %>').attr("disabled", true); 
     } 

     else 
      $('#<%=cbUntilEndofProgram.ClientID %>').attr("disabled", false); 
    }); 
</script> 

<uc1:AutoSearch runat="server" ID="AutoSearch1" 
    OnTextChangeFuction = "AutoSearch_Changed"/> 

:

public string OnTextChangeFuction { 
    get {}; 
    set {}; 
} 

function ClearAutoSearch() { 
    $('#<%=txtSearch.ClientID %>').val(''); 
    $('#divNoResults').hide(); 
    $('#divSeeAllResults').hide(); 
    $('#AutoSearchResults').hide(); 
    $('#<%=HiddenField1.ClientID %>').val(''); 

    if ("<%=OnTextChangeFuction %>" != "") 
     $("#<%=txtSearch.ClientID %>").trigger("<%=OnTextChangeFuction %>",    
      $('#<%=HiddenField1.ClientID %>').val()); 
} 

내가 별도의 .js 파일로 아웃 제어 스크립트를 이동하려는. 함수를 파일로 전달하는 방법은 무엇입니까?

+1

"A 코드 스 니펫 (snipet)을 사용해 주시면 감사하겠습니다. " 내 감정은 정확히 – hunter

+2

네 말이 맞아. 코드 스 니펫 (귀하의 것)은 높이 평가됩니다. –

+0

@ 헌터 : 우스운 우리 둘 다 똑같이 반응 ...;) –

답변

1

"함수를 파일로 전달"하지 마십시오. 서버를 사용하여 javascript 파일을 동적으로 빌드하고 원하는 데이터 값을 쓸 수 있습니다. 그러나 이것이 최상의 솔루션이 아닐 수도 있습니다. 호출해야하는 함수가 있고 서버에서 제공하는 데이터에 따라 다르면 플랫 파일에서 javascript 함수를 사용하고 html 파일을 생성 할 때 서버에서 자바 스크립트 데이터를 제공하는 것이 가장 좋습니다. 그래서 다음과 같이하면됩니다 :

// in your js file 
function ClearAutoSearch(searchFieldIDS) { 
    $(searchFieldIDS.textSearchID).val(''); 
    $(searchFieldIDS.noResultsID).hide(); 
    // etc 
} 

// in your server-generated html file 
<script> 
    // use the server to write javascript which will build a data object 
    var searchFieldIDS = { 
     textSearchID: '#<%=txtSearch.ClientID %>', 
     noResultsID: '#divNoResults' 
    } 

    // pass that data object to your function 
    ClearAutoSearch(searchFieldIDS) 
</script> 

예를 들어, searchFieldIDS는 전역 변수입니다. 나는 이것을 단순화를 위해 유지했다. 그러나 프로덕션 코드에서는 글로벌 자바 스크립트 변수를 사용하지 않았다. 고유 한 최상위 네임 스페이스를 만들고 여기에 변수 (MyNameSpace.searchFieldIDs)를 넣음으로써 전역 변수를 피하거나 jquery의 document.ready 본문 내에서와 같이 전역이 아닌 범위에서 선언 할 수 있습니다.

관련 문제