Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery创建的代码上的JavaScript永远不会被调用_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

jQuery创建的代码上的JavaScript永远不会被调用

jQuery创建的代码上的JavaScript永远不会被调用,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,这是我在ASP.NETMVC中的观点 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Administration.Master" Inherits="System.Web.Mvc.ViewPage" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> </asp:Content> &

这是我在ASP.NETMVC中的观点

<%@ 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>
从不跑步。字段集标记在响应中,因此您在这里看不到它,但它在那里-所有内容都返回正常(我与Firebug进行了检查)


为什么上面两行JS从来没有运行过或者没有任何效果?

我想你的问题就在这里:

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

$.get("<%=ResolveUrl("~/") %>" + typeId + "/Create", function (data) {
    $("#CreateForm").html(data); // thanks Peter
    $("fieldset input").attr("disabled", "disabled"); // thanks Nick
});
$.get(“+typeId+”/Create”,函数(数据){
$(“#CreateForm”).html(数据);//谢谢Peter
$(“字段集输入”).attr(“禁用”、“禁用”);//谢谢
});

这可能是抛出了一个js异常,它永远不会进入fieldset循环。

我认为您的问题在于:

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

$.get("<%=ResolveUrl("~/") %>" + typeId + "/Create", function (data) {
    $("#CreateForm").html(data); // thanks Peter
    $("fieldset input").attr("disabled", "disabled"); // thanks Nick
});
$.get(“+typeId+”/Create”,函数(数据){
$(“#CreateForm”).html(数据);//谢谢Peter
$(“字段集输入”).attr(“禁用”、“禁用”);//谢谢
});

这可能会抛出一个js异常,它永远不会进入fieldset循环。

调用此代码时,fieldset标记不存在。尝试将此代码移动到success函数的内部,它可能会起作用

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);
            });
        });
    }

调用此代码时,字段集标记不存在。尝试将此代码移动到success函数的内部,它可能会起作用

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);
            });
        });
    }

很难说没有看到呈现的HTML。你能补充一下吗?你有很多问题要处理。结合你目前得到的两个答案,你将朝着正确的方向前进。如果不看到呈现的HTML,很难说。你能补充一下吗?你有很多问题要处理。将迄今为止得到的两个答案结合起来,你将朝着正确的方向前进。如果你和hunter将答案结合起来,你就可以开始用操作码解决多个问题。你可以跳过使用
每个(…)
函数,只需应用
attr(…)
到选择器以获得更简洁的代码。如果您和hunter结合您的答案,您可以开始解决OP代码的多个问题。您可以跳过使用
每个(…)
函数,只需将
attr(…)
应用到选择器以获得更简洁的代码。