javascript - 填写表格后替换两个变量

标签 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 中保留任何初始值,因为在打开 View 时没有给出任何内容,应用程序就会崩溃。 整个项目是在 Django 中创建的,报告的 View 是:

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'),

最佳答案

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);

关于javascript - 填写表格后替换两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209158/

相关文章:

javascript - 当 LightSwitch HTML 根屏幕布局的高度设置为 "stretch to container"时,它会延伸到屏幕之外

javascript - 每天使用 dc.js 进行规模化

javascript - 有没有办法为 HTML5 输入的模式属性应用正则表达式修饰符?

python - 通过 html 发布 pandas 数据透视表

php - 使用 php 在字符串中降级标题标签(递归地将 h1 转换为 h2,将 h2 转换为 h3)

javascript - 在不明确列出它们的情况下,以其导出名称导入所有命名导出

python - 获取随机数列表中的第一个素数

python - 如何停止守护线程?

PHP - 表单提交后未设置 $_POST 变量

html - 浏览器或移动设备无法识别媒体查询