【问题标题】:jQuery datepicker not working on MVC4 applicationjQuery datepicker 不适用于 MVC4 应用程序
【发布时间】:2013-08-24 15:31:40
【问题描述】:

我正在尝试将 jQuery datepicker 引入我的 MVC4 应用程序,但我似乎无法让 click 事件触发 datepicker 小部件。在http://jqueryui.com/datepicker/,他们给出了一个简单的例子来说明如何实现这一点,当我在本地尝试时,它按预期工作,但在 MVC4 应用程序上什么也没有:

我的代码如下:

<script src="@Url.Content("~/Scripts/jquery-2.0.2.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.10.3.js")" type="text/javascript"></script>
<script type="text/javascript">
  $(document).ready(function () {
    $('#expirydate').datepicker();
  });
</script>

<div class="nine columns bottom20">
  <div class="row">
     <h3>New Course details</h3>

      @using(Html.BeginForm("NewCourse","Admin",FormMethod.Post))
      {
        <div class="row">
          <div class="twelve columns" style="width:590px;">
            <div class="row">
              <div class="six columns">
                <label for="name">Name:</label>
                <input type="text" id="name" name="name" /><br />
              </div>
              <div class="six columns">
                <label for="author">Author:</label>
                <input type="text" id="author" name="author" /><br />
              </div>

              <div class="row">
                <div class="twelve columns" style="width:590px; margin-left:5px;">
                  <label for="description">Description:</label>
                  <input type="text" id="description" name="description" /><br />
                </div>
              </div>

              <div class="twelve columns" style="width:590px;">
              <div class="row">                    
                <div class="six columns">
                  <label for="participationpoints">Participation Points:</label>
                  <input type="text" id="participationpoints" name="participationpoints" /><br />
                </div>
                <div class="six columns">
                  <label for="expirydate">Expiry Date:</label>
                  <input type="text" id="expirydate" name="expirydate" /><br />
                </div>
              </div>
              </div>



              <div class="row">
                <div class="six columns">
                  <input type="hidden" id="uploaddate" name="uploaddate" /><br />
                </div>  
              </div>
            </div>
          </div>
        </div>            
          <div class="twelve columns"> 
          <input id="CourseSubmit" type="submit" value="Submit button" class="medium button bottom20"style="margin-left:210px; margin-top:-50px;" />
          </div> 
      }
    </div>   
  </div>

有什么想法吗?

布局中的其他脚本如下:

<script type="text/javascript" src= "@Url.Content("~/Scripts/jquery.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/Scripts/foundation.min.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/Scripts/modernizr.foundation.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/plugins/slider-revolution/jquery.themepunch.plugins.min.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/plugins/slider-revolution/jquery.themepunch.revolution.min.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/Scripts/jquery.carouFredSel-6.0.3-packed.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/Scripts/jquery.touchSwipe.min.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/plugins/titan/js/jquery.titanlighbox.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/plugins/titan/js/prettify.js")"></script>
<script type="text/javascript" src= "@Url.Content("~/Scripts/meta-app-head.js")"></script>
<!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script type="text/javascript" src= "@Url.Content("~/Scripts/meta-app.js")"></script>
<script  type="text/javascript" src="@Url.Content("~/Scripts/filedrag.js")"></script>
<script  type="text/javascript" src="@Url.Content("~/Scripts/footable.js")"></script>
<script  type="text/javascript" src="@Url.Content("~/Scripts/footable.sortable.js")"></script>
<script  type="text/javascript" src="@Url.Content("~/Scripts/footable.filter.js.js")"></script>
<script  type="text/javascript" src="@Url.Content("~/Scripts/footable.paginate.js")"></script>

我的捆绑配置如下:

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery.js",
                    "~/Scripts/foundation.min.js",
                    "~/Scripts/modernizr.foundation.min.js",
                    "~/Scripts/jquery{version}.js",
                    "~/Scripts/jquery.carouFredSel-6.0.3-packed.js",
                    "~/Scripts/jquery.touchSwipe.min.js",
                    "~/plugins/slider-revolution/jquery.thempunch.plugins.min.js",
                    "~/plugins/slider-revolution/jquery.thempunch.revolution.min.js",
                    "~/plugins/flexislider/jquery.flexslider.js",
                    "~/plugins/camera/scripts/camera.min.js",
                    "~/plugins/camera/scripts/jquery.easing.1.3.js",
                    "~/plugins/camera/scripts/jquery.mobile.customized.min.js",
                    "~/plugins/titan/js/jquery.titanlighbox.js",
                    "~/plugins/titan/js/prettify.js",
                    "~/Scripts/jquery.validate.min.js",
                    "~/Scripts/footable.js",
                    "~/Scripts/footable.sortable.js",
                    "~/Scripts/footable.filter.js",
                    "~/Scripts/footable.paginate.js",
                    "~/Scripts/jquery-2.0.2.js",
                    "~/Scripts/jquery-ui-1.10.3.js",
                    "~/Scripts/jquery.validate.unobtrusive.min.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-1.10.3.js",
                    "~/Scripts/jquery-ui-{version}.js"));

【问题讨论】:

  • 你确定 jquery ui 正在加载吗?
  • 我将它包含在我的包配置中,但担心它没有被调用,所以我在 html 中专门指定它指向包含它的文件夹
  • 您的布局中是否包含任何其他脚本?
  • 看起来您正在渲染 jQuery 两次,这可能会导致问题。
  • 亲爱的,如果你能接受,我会把它作为答案发布:)

标签: javascript jquery jquery-ui asp.net-mvc-4 datepicker


【解决方案1】:

您正在渲染 jQuery 两次,一次在您的布局中,一次在您的视图中。这可能会导致您看到的问题。

【讨论】:

  • 对不起,我在一些更改期间发布了一个编辑,输入的 id 是 expirydate,这就是我使用 $('#expirydate').datepicker();
  • 啊,好吧,那么这解决了这个问题。所以你现在在更正时也遇到了问题?
  • 是的问题仍然存在,我正在更改为 datepicker,因为这是示例中使用的标签,我注意到它与表单控件的 id 相关联,我在本地尝试使用 expirydate 作为字段的 id 并且没有问题但是在 mvc4 应用程序中没有显示任何内容
  • 检查以确保 jQuery 文件正在发送到浏览器。您是否在您使用的任何浏览器的调试器中检查了 javascript 错误?您在此处包含的 jQuery 文件是否与您在“本地”使用的版本相同?你说的本地是什么意思?您也应该在本地运行 MVC 应用程序,除非您将其部署到服务器,而这就是您遇到问题的地方。
  • 对不起,当我说本地时,我的意思是创建一个简单的 html 文件并包含在这个简单的 html 文件中,链接到桌面上的相同 jquery 文件
【解决方案2】:

正确的代码:

$('#datepicker').datepicker();

检查您的 css 文件 jquery-ui。

jquery 中的选择器

#= ID

. = 类

某些属性

$('a[href=www.google.com]')

【讨论】:

  • 抱歉发错了
  • 我现在能够成功选择一个日期,并且文本框以 MM/DD/YYYY 格式填充,但我的日期格式是 DD/MM/YYYY 所以当我选择 8 月 1 日 (08/ 08/2013)没问题,但如果我选择 28 日(2013 年 8 月 28 日),那么我会收到日期异常错误。我可以使用 jQuery 更改文本框的文化,以便它以我期望的格式发布/
猜你喜欢
  • 1970-01-01
  • 2013-09-04
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
相关资源
最近更新 更多