【问题标题】:jquery .val() sets different values than providedjquery .val() 设置的值与提供的不同
【发布时间】:2015-07-28 04:02:48
【问题描述】:

我有一个 django 表单,需要通过单击按钮来填写。表单呈现如下:

<input type="text" id="start_date">
<input type="text" id="end_date">
<input type="submit" id="submit_first" value="POST">
<button id="submit_second">Generate</button>

点击submit_second时设置文本字段值的jquery如下:

$('#submit_second').click(function(){
    $('#id_start_date').val({{start_date}});
    $('#id_end_date').val({{end_date}});

    $('#submit_first').click();
})

start_date 和 end_date 变量保存一些日期字符串,它们作为视图的上下文传递并在模板中输出它们的真实值(eg: 2015-07-7),但在触发 jquery 函数时在文本字段中设置不同的值(eg: 1990 )。

【问题讨论】:

  • 生成的代码是什么样的?是$('#id_start_date').val(2015-07-7);吗? JavaScript 应该如何知道2015-07-7 是一个日期,而不是从2015减去 77?你可能想传递一个 string.

标签: javascript jquery django


【解决方案1】:

我的假设是渲染的脚本类似于$('#id_start_date').val(2015-07-7);,其中2015-07-7 将被视为数学公式,将处理方程式并将运算结果设置为输入值。

既然要按原样渲染值,就需要把值当作字符串对待,所以试试

$('#submit_second').click(function () {
    $('#id_start_date').val('{{start_date}}');
    $('#id_end_date').val('{{end_date}}');

    $('#submit_first').click();
})

【讨论】:

  • 说真的,现在感觉很愚蠢。谢谢老大!!
【解决方案2】:

.val() 方法检索元素的值。 您应该使用.text() 方法。

$('#submit_second').click(function(){
    $('#id_start_date').text({{start_date}});
    $('#id_end_date').text({{end_date}});

    $('#submit_first').click();
})

【讨论】:

  • .val设置 &lt;input&gt; 元素的值,这就是 OP 所拥有的(即使选择器不匹配......)。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
相关资源
最近更新 更多