Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
MVC局部视图中的Javascript在视图被替换时停止工作_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc Partialview - Fatal编程技术网

MVC局部视图中的Javascript在视图被替换时停止工作

MVC局部视图中的Javascript在视图被替换时停止工作,javascript,jquery,asp.net-mvc,asp.net-mvc-partialview,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc Partialview,在标题中解释这个问题有点困难,但我已经尽力了。。这是关于从主视图使用Javascript的部分视图。 所以我正在建立一个使用向导驱动的注册表的网站。我使用了这个教程 我有一个主视图(Register.cshtml),其中包含用于加载局部视图的div。 用户在步骤1中输入一些数据,然后是步骤2,依此类推。在步骤1中,我有一个日期选择器供用户选择日期。输入字段(id为datetimepicker2)使用som JavaScript,如下所示。加载Register.cshtml并显示步骤1的部分视图时

在标题中解释这个问题有点困难,但我已经尽力了。。这是关于从主视图使用Javascript的部分视图。 所以我正在建立一个使用向导驱动的注册表的网站。我使用了这个教程

我有一个主视图(Register.cshtml),其中包含用于加载局部视图的div。 用户在步骤1中输入一些数据,然后是步骤2,依此类推。在步骤1中,我有一个日期选择器供用户选择日期。输入字段(id为datetimepicker2)使用som JavaScript,如下所示。加载Register.cshtml并显示步骤1的部分视图时,它可以正常工作。但是如果用户从步骤2返回到步骤1,则日期选择器停止工作。当我将光标放在输入字段中时,不会发生任何事情。 如果我看源代码,脚本仍然存在,所以我想知道为什么它找不到我的datetimepicker2

因此,场景是开始注册->步骤1(日期选择器工作)->步骤2->返回到步骤1(日期选择器不工作)

\u Layout.cshtml

@RenderSection("scripts", required: false)
<div id="divContainer">
    @Html.Partial("_StepOne")  <!-- Step one is shown as default-->
</div>

@section scripts {         <!-- This is the script that only works the first time -->
    <script type="text/javascript">
        $(document).ready($(function () {
            $('#datetimepicker2').datetimepicker({
                locale: 'da',
                format: 'DD-MM-YYYY'
            });
        }));

    </script>
}
Register.cshtml

@RenderSection("scripts", required: false)
<div id="divContainer">
    @Html.Partial("_StepOne")  <!-- Step one is shown as default-->
</div>

@section scripts {         <!-- This is the script that only works the first time -->
    <script type="text/javascript">
        $(document).ready($(function () {
            $('#datetimepicker2').datetimepicker({
                locale: 'da',
                format: 'DD-MM-YYYY'
            });
        }));

    </script>
}

所以我在哈利提供线索后找到了答案。 我将JavaScript更改为:

    $(document).on('focusin', '#datetimepicker2', function () {
        $(this).datetimepicker({
            locale: 'da',
            format: 'DD-MM-YYYY'
        });
    });

现在它可以工作了:)

哦,我以前在mvc中从未遇到过这种情况。很遗憾听到这个消息。我在webforms中遇到过这个问题,不过是更新面板。这是因为当部分页面上的元素重新加载时,jquery不会将选择器重新绑定到这些元素上,我认为。。。也许不是。无论如何,尝试在部分视图中引用您需要的所有脚本,即使您已经在父页面上引用了它们。太好了!你的评论让我找到了答案:)我在谷歌上搜索了“jquery重新绑定”,发现了这篇帖子:
    $(document).on('focusin', '#datetimepicker2', function () {
        $(this).datetimepicker({
            locale: 'da',
            format: 'DD-MM-YYYY'
        });
    });