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

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

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

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

到目前为止我的代码:

{% block head %}

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

<script type="text/javascript" src="{{STATIC_URL}}js/jquery1.min.js"></script>
<script src="{{STATIC_URL}}js/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 %}
 ...............

谢谢。

【问题讨论】:

    标签: javascript jquery python django datepicker


    【解决方案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 来做这件事,已经有很多答案可以完成类似的功能。

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

    【讨论】:

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