填写表单后替换两个变量

时间:2016-05-13 11:40:48

标签: javascript python html django

我不是一个Javascript专家,但有时我需要转向它。 我有一个脚本,允许用户选择两个日期(从和到)来创建一个报告。

<div onmouseover="myFunction()">
<input id="id_from_date" name="from_date" type="text">
<input id="id_to_date" name="to_date" type="text">
</div>

<script>
function myFunction() {
    $('#id_from_date').datetimepicker({
        format: 'd-m-Y',
        lang: 'pl',
        pickTime: false,
        timepicker: false,
        weeks: true,
        dayOfWeekStart: 1,
        closeOnDateSelect: true
    });
    $('#id_to_date').datetimepicker({
        format: 'd-m-Y',
        lang: 'pl',
        pickTime: false,
        timepicker: false,
        weeks: true,
        dayOfWeekStart: 1,
        closeOnDateSelect: true
    });
    var from = document.getElementById("id_from_date").value;
    var to = document.getElementById("id_to_date").value;
    var url = '{% url 'logistyka_tabela_brakow.views.report_from_to' '11-11-1111' '12-12-1212' %}';
    document.getElementById("link").setAttribute("href", url.replace(/11-11-1111/, from), url.replace(/12-12-1212/, to))
}
</script>

 <a id="link" type="button" class="btn btn-success">go!</a>

我在这里的绳索尽头。代码将第一个变量id_from_date替换为用户选择的日期。不幸的是,它忽略了第二个变量id_to_date。任何人都可以给我一个提示,为什么会这样呢? 我不能保留任何初始值的var url,因为在打开视图时应用程序崩溃而没有给出任何内容。 整个项目在Django中创建,报告的视图是:

def report_from_to(request, from_date, to_date):
    from datetime import datetime
    strfrom = datetime.strptime(from_date, "%d-%m-%Y")
    strto = datetime.strptime(to_date, "%d-%m-%Y")
    report = Braki.objects.filter(Q(date__gte=strfrom), Q(date__lte=strto))
    return render(request, 'logistyka_tabela_brakow/report_from_to.html', {'report': report})

形式:

class ReportForm(forms.Form):
    from_date = forms.DateField()
    to_date = forms.DateField()
    fields = '__all__'

网址显然是:

url(r'report_from_to/(?P<from_date>[0-9]{2}-[0-9]{2}-[0-9]{4})/(?P<to_date>[0-9]{2}-[0-9]{2}-[0-9]{4})',
               'logistyka_tabela_brakow.views.report_from_to', name='report_from_to'),

1 个答案:

答案 0 :(得分:1)

syntax of setAttribute

element.setAttribute(name, value);

你用3个参数调用它,所以第三个被忽略。

document.getElementById("link")
  .setAttribute("href", 
                url.replace(/11-11-1111/, from),
                url.replace(/12-12-1212/, to)
  );

这应该这样做

var url = '{% url 'logistyka_tabela_brakow.views.report_from_to' '11-11-1111' '12-12-1212' %}';
url = url.replace(/11-11-1111/, from);
url = url.replace(/12-12-1212/, to);
document.getElementById("link").setAttribute("href", url);
相关问题