如何加载HTML以及在JavaScript中更改时如何获取输入

发布于 2025-02-07 00:52:45 字数 672 浏览 4 评论 0原文

我正在使用JS将数据传递给Python。首先,当加载HTML时,我想收集值,这有效,问题是当值更改时,它不会改变。

请原谅我,我是JS的新手。这是我的工作代码:

<input type="date" id="start-date" name="start-date" value="2019-10-10"/>
<label for="date">to</label>
<input type="date" id="end-date" name="end-date" value="2020-05-10"/>

<script>
  document.onreadystatechange = function () {
    var start_date = document.getElementById("start-date").value;
    var end_date = document.getElementById("end-date").value;

    $.ajax({
      url: "/dates",
      type: "GET",
      data: {
        start_date: start_date,
        end_date: end_date,
      },
    });
  };
</script>

I am using JS to pass data to Python. First, when the HTML is loaded I want to collect the values and this works, the issue is when the value changes, it doesn't change.

Please excuse me, I am quite new to JS. Here is my working code:

<input type="date" id="start-date" name="start-date" value="2019-10-10"/>
<label for="date">to</label>
<input type="date" id="end-date" name="end-date" value="2020-05-10"/>

<script>
  document.onreadystatechange = function () {
    var start_date = document.getElementById("start-date").value;
    var end_date = document.getElementById("end-date").value;

    $.ajax({
      url: "/dates",
      type: "GET",
      data: {
        start_date: start_date,
        end_date: end_date,
      },
    });
  };
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

顾北清歌寒 2025-02-14 00:52:46

document.onreadystatechange没有任何意义。

更改活动

您需要在这里委派文档的

window.addEventListener("DOMContentLoaded", function() { // only needed if the script is not after the date elements
  document.addEventListener("change",function(e) { // this can be narrowed to a closer container like a form
    const tgt = e.target;
    if (!tgt.matches("[type=date]") return; // not a date change
    let start_date = document.getElementById("start-date").value;
    let end_date = document.getElementById("end-date").value;
    $.get("/dates", {start_date, end_date },function(data) {
      console.log(data); // returned from server
    });
  });
}); 

。使用同一事件处理程序进行两个日期的替代方案

window.addEventListener("DOMContentLoaded", function() { // only needed if the script is not after the date elements
  const startDateField = document.getElementById("start-date");
  const endDateField = document.getElementById("end-date");
  const dateChange = e => { 
    let start_date = startDateField.value;
    let end_date = endDateField.value;
    $.get("/dates", {start_date, end_date },function(data) {
      console.log(data); // returned from server
    });
  };
  startDateField.addEventListener("change",dateChange);
  endDateField.addEventListener("change",dateChange);
}); 

document.onreadystatechange does not make any sense.

You need a change event

Here I delegate from document.

window.addEventListener("DOMContentLoaded", function() { // only needed if the script is not after the date elements
  document.addEventListener("change",function(e) { // this can be narrowed to a closer container like a form
    const tgt = e.target;
    if (!tgt.matches("[type=date]") return; // not a date change
    let start_date = document.getElementById("start-date").value;
    let end_date = document.getElementById("end-date").value;
    $.get("/dates", {start_date, end_date },function(data) {
      console.log(data); // returned from server
    });
  });
}); 

Alternative using the same event handler for both dates

window.addEventListener("DOMContentLoaded", function() { // only needed if the script is not after the date elements
  const startDateField = document.getElementById("start-date");
  const endDateField = document.getElementById("end-date");
  const dateChange = e => { 
    let start_date = startDateField.value;
    let end_date = endDateField.value;
    $.get("/dates", {start_date, end_date },function(data) {
      console.log(data); // returned from server
    });
  };
  startDateField.addEventListener("change",dateChange);
  endDateField.addEventListener("change",dateChange);
}); 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文