2010-03-23 4 views
0

이것은 ASP.NET MVC에서의 내보기입니다.jQuery에서 JavaScript가 생성 된 코드는 호출되지 않습니다.

당신이 볼 수 있듯이
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Administration.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="HeadContent" runat="server"> 
    <script type="text/javascript"> 

     var ddlContentTypes; 

     $(document).ready(function() { 
      ddlContentTypes = $("#ContentTypes"); 
      ddlContentTypes.bind("change", loadCreate); 
      loadCreate(); 
     }); 

     function loadCreate() { 
      var typeId = $("#ContentTypes option:selected").val(); 
      $.get('~/' + typeId + '/Create', function (data) { 
       $("#CreateForm").html(data); 
      }); 
      $("fieldset input").each(function (index, item) { 
       $(item).attr("disabled", true); 
      }); 
     } 
    </script> 
</asp:Content> 
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server"> 
    <h2> 
     <%=Resources.Localize.CreateWidget %></h2> 
    <p> 
     <% Html.RenderPartial("ContentTypeSelector"); %></p> 
    <div id="CreateForm"> 
    </div> 
</asp:Content> 

은, 일부 HTML (실제로 사용자 컨트롤)을로드하고의 CreateForm DIV에 추가합니다. 이것은 실제로 정상적으로 작동합니다.

문제는이

$("fieldset input").each(function (index, item) { 
       $(item).attr("disabled", true); 
      }); 

는 결코 실행되지 않습니다. fieldset 태그가 응답에 포함되어 있으므로 여기에 표시되지는 않지만 거기에 표시됩니다. 모든 것이 정상적으로 반환됩니다 (Firebug로 확인).

위의 두 줄의 JS가 실행되지 않거나 효과가없는 이유는 무엇입니까?

+0

렌더링 된 HTML을 보지 않아도 말하기 어렵습니다. 그것을 추가 할 수 있습니까? – hunter

+0

여러 문제를 처리해야합니다. 지금까지 얻은 두 가지 답변을 결합하면 올바른 방향으로 나아갈 수 있습니다. –

답변

2

이 코드를 호출 할 때 fieldset 태그가 없습니다. 이 코드를 성공 함수 내부로 이동하면 효과가있을 수 있습니다.

function loadCreate() { 
     var typeId = $("#ContentTypes option:selected").val(); 
     $.get('~/' + typeId + '/Create', function (data) { 
      $("#CreateForm").html(data); 
      $("fieldset input").each(function (index, item) { 
       $(item).attr("disabled", true); 
      }); 
     }); 
    } 
+0

음, 절대 신경 쓰지 마라. +1 –

+0

당신과 사냥꾼이 대답을 결합하면 OP 코드로 여러 문제를 해결하기 시작할 수 있습니다. –

+1

'each (...) '함수를 사용하지 않고 단지 좀 더 간결한 코드를 위해'attr (...)'을 셀렉터에 적용 할 수 있습니다. –

1

나는 당신의 문제에 대해 생각 :

$.get('~/' + typeId + '/Create', function (data) { 
    $("#CreateForm").html(data); 
}); 

가 있어야한다 :

아마 JS 예외를 던지는 것 그것은 결코 FIELDSET 루프에 도착하지있어
$.get("<%=ResolveUrl("~/") %>" + typeId + "/Create", function (data) { 
    $("#CreateForm").html(data); // thanks Peter 
    $("fieldset input").attr("disabled", "disabled"); // thanks Nick 
}); 

.

관련 문제