Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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
每次使用ajax呈现局部视图时都运行jquery代码_Jquery_Ajax_Asp.net Mvc_Datepicker - Fatal编程技术网

每次使用ajax呈现局部视图时都运行jquery代码

每次使用ajax呈现局部视图时都运行jquery代码,jquery,ajax,asp.net-mvc,datepicker,Jquery,Ajax,Asp.net Mvc,Datepicker,我正在使用Ajax.Actionlink在MVC中呈现partialview。我还使用Modernizer datepicker,这样firefox就可以像Chrome一样,输入类型为date 当我单击第一个Ajax actionlink时,日期选择器工作正常。但当我再次点击它时,它根本不起作用 如果我重新加载页面(F5),它会再次工作,第一次,而不是第二次和以后 如何修复它,使jQuery代码每次都运行,即使我切换到另一个局部视图 我的JS: <script> $.noCo

我正在使用Ajax.Actionlink在MVC中呈现partialview。我还使用Modernizer datepicker,这样firefox就可以像Chrome一样,输入类型为date

当我单击第一个Ajax actionlink时,日期选择器工作正常。但当我再次点击它时,它根本不起作用

如果我重新加载页面(F5),它会再次工作,第一次,而不是第二次和以后

如何修复它,使jQuery代码每次都运行,即使我切换到另一个局部视图

我的JS:

<script>
    $.noConflict();  
    if (!Modernizr.inputtypes.date) {
        $('input[type=date]').datepicker({ dateFormat: 'yy-mm-dd' });
    }
</script>

$.noConflict();
如果(!Modernizer.inputtypes.date){
$('input[type=date]')。日期选择器({dateFormat:'yy-mm-dd'});
}
编辑:我尝试过用$(函数(){…})包装JS;代码在局部视图中。还尝试使用OnSuccess选项,但结果相同。它只运行第一次,然后我需要重新加载页面

编辑2:

我的Ajax操作链接:

<div id="createCalcMenu">
@Ajax.ActionLink("Annuity", "Annuity", "Calculation", new AjaxOptions
        {
             UpdateTargetId = "calcDiv",
             InsertionMode = InsertionMode.Replace,
             HttpMethod = "POST"
        })
                    <br />              
@Ajax.ActionLink("Amortization", "Amortization", "Calculation", new AjaxOptions
        {
             UpdateTargetId = "calcDiv",
             InsertionMode = InsertionMode.Replace,
             HttpMethod = "POST"
        })
</div>
    <div id="calcDiv"></div>

@ActionLink(“年金”、“年金”、“计算”,新的AjaxOptions
{
UpdateTargetId=“calcDiv”,
InsertionMode=InsertionMode.Replace,
HttpMethod=“POST”
})

@ActionLink(“摊销”、“摊销”、“计算”,新的AjaxOptions { UpdateTargetId=“calcDiv”, InsertionMode=InsertionMode.Replace, HttpMethod=“POST” })
编辑3:

我的观点:

@using (Ajax.BeginForm("ShowDetailAnnuity", "Calculation", new AjaxOptions
{
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "CalcDetail",
    LoadingElementId = "Loader"
}))
{
<input type="date" id="StartDate" name="startdate" title="Please enter start date (YYYY-mm-dd)" class="startDateTextbox" required />

//Rest of the form here...

<input type="submit" id="calcBtn" class="calcBtn" name="SubmitValue" value="Calculate" title="Calculate your calculation" />
}


<script>
$(function () {
    $.noConflict();
    if (!Modernizr.inputtypes.date) {
        $('input[type=date]').datepicker({ dateFormat: 'yy-mm-dd' });
    }
});
</script>
@使用(Ajax.BeginForm(“ShowDetailAnnuity”,“Calculation”),新的AjaxOptions
{
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“CalcDetail”,
LoadingElementId=“Loader”
}))
{
//表格的其余部分在这里。。。
}
$(函数(){
$.noConflict();
如果(!Modernizer.inputtypes.date){
$('input[type=date]')。日期选择器({dateFormat:'yy-mm-dd'});
}
});

我认为问题可能出在jQuery上

我复制了您的代码,只是对部分视图的脚本做了一个小的更改。 当我第一次运行代码时,它给了我一个错误,说$is not defined(尽管我已经在主布局中包含了jQuery库)。 我在局部布局中手动调用了jQuery,它成功了。我希望它能帮助你

以下是我在年金部分视图代码中所做的更改:

<script>
    jQuery(function ($) {
          $.noConflict();
          if (!Modernizr.inputtypes.date) {
              $('input[type=date]').datepicker({ dateFormat: 'yy-mm-dd' });
          }
    });
</script>

jQuery(函数($){
$.noConflict();
如果(!Modernizer.inputtypes.date){
$('input[type=date]')。日期选择器({dateFormat:'yy-mm-dd'});
}
});

无论我点击链接多少次,日期选择器总是为我而来。还要确保您只对JS文件jquery和mordernizr进行了一次引用(在主布局中)

将此脚本放在部分视图中,或者将此脚本添加到
Ajax的
OnSuccess
中。ActionLink
脚本在您使用jquery的部分视图中,因此它不在
$(function(){…})中doc ready block.@Jai与我(尝试过的)代码相同的结果我也尝试过将OnSuccess=“alert('blablabla')”添加到actionlinks,但它(就像jquery代码一样)只在第一次运行。然后我需要重新加载页面,使其再次显示,并获得相同的结果。我真的不明白为什么。可能是冲突或其他问题,你如何在主题中调用你的脚本?我想问的是,这是在jQuery之后被称为modernizr的吗?是的,modernizr是在jQuery之后被称为modernizr的,我想我可能知道你为什么会得到这个。您是否也在局部视图中包含了jQuery js文件?如果有,那么应该删除部分视图中的引用(jquery和mordernizr),在主布局中只调用一次,然后使用我提到的脚本。我在主布局视图中只链接了jquery和modernizr