在 django 中使用 Datepicker(来自 Jquery)

Posted

技术标签:

【中文标题】在 django 中使用 Datepicker(来自 Jquery)【英文标题】:Using Datepicker (from Jquery) in django 【发布时间】:2015-02-07 15:40:03 【问题描述】:

我想以这种方式在 django 上使用 Datepicker(来自 Jquery):

通过“views.py”,我从 mysql DB 发送日期列表。 当用户选择的日期等于我在数据库中的日期之一时,我想显示一条消息。

我怎样才能做到这一点? (使用 Django、Jquery 和 AJAX)

到目前为止我的代码:

% block head %

<link href="STATIC_URLcss/jquery-ui.css" rel="stylesheet" type="text/css"/>

<script type="text/javascript" src="STATIC_URLjs/jquery1.min.js"></script>
<script src="STATIC_URLjs/jquery-ui.min.js"></script>


<script>
$(function() 
    $( "#datepicker" ).datepicker(
        showOtherMonths: true,
        selectOtherMonths: true,
        dateFormat: 'dd/mm/yy',
        changeMonth: true,
        changeYear: true,
    );
    date = $( "#datepicker" ).datepicker('getDate');
);
</script>

% endblock %

% block body_block %

<br/><br/><br/><br/><br/><br/><br/>
<form id="form" name="form" action="/home/" method="get">
    <label>Choose Date</label>
    <br/>
    <input style="color:black" id="datepicker"/>
    <br/><br/>
</form>

% for date in dates %
 ...............

谢谢。

【问题讨论】:

【参考方案1】:

这是一个工作示例: http://jsfiddle.net/njsmu356/

将所有日期添加到 div 并将其隐藏。

<div id="dateDiv" style="display:none;">
    <ul id="dates">
        % for date in dates % 
            <li>date</li> 
        % endfor %
    </ul>
</div>

然后使用 jQuery 查找所选日期与 &lt;li&gt; 中的日期的匹配。

    $('#datepicker').change(function() 
        // Get the value of date field
        var dateValue = $('#datepicker').val();

        // Make and empty list
        var dateList = [];

        // Append all dates from <li> to dateList
        $("#dates li").each(function() 
            dateList.push($(this).text()); 
        );

        // Perform the match    
        if ($.inArray(dateValue, dateList  ) > -1) 
            alert("Date matched!!!");
         else 
            alert("Sorry. Try again.");
        
    );

注意:

确保所选日期的格式与您从视图中发送的日期格式相同。您可能还需要验证日期的输入值。一些 jQuery 表单验证插件会有所帮助。

更新

既然你想用 AJAX 来做这件事,已经有很多答案可以完成类似的功能。

    Django: ajax response for valid/available username/email during registration AJAX username validation in Django And a lot here

【讨论】:

嗨@xyres。我敢肯定有一种更优雅的方式。在我看来,这不是很有效和安全。我的想法是在所有日期中运行,直到我的数据库中的日期等于用户从日期选择器中选择的日期。如果您可以向我展示使用 ajax 的方法,那将对我非常有帮助。谢谢! 那么你应该在你的问题中写上ajax。你写了“我正在发送一个日期列表......” - 你模板中的 for 循环让我感到困惑。好的,当我登录我的桌面时会更新我的答案。目前正在使用手机。 @user3731023 更新了答案。

以上是关于在 django 中使用 Datepicker(来自 Jquery)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 应用程序中使用 bootstrap-datepicker?

在一个页面中使用带有多个 django 表单的 jQuery datepicker

django admin 1.7 + django-grappelli 2.6.1 中的 jQuery datepicker 本地化

django 使用第三方js库“My97DatePicker”作为时间选择插件

django 使用第三方js库“My97DatePicker”作为时间选择插件

如何将 jquery datepicker 从模板传递到 python Django 中查看?