【问题标题】:How to create a condition with two inputs with date?如何创建具有两个输入日期的条件?
【发布时间】:2020-08-07 08:42:20
【问题描述】:

你能帮我处理一下数据框吗?

我有两个数据框。 我需要以某种方式在 PHP 或 JavaScript 中创建一个条件,以便 date2 字段始终高于 date1。

如果违反条件,则 date2 字段将自动设置为与 date1 中相同的日期。

<div class="form-group">
       <input type="date" class="form-control" onchange="vypocet();ubytko_single();ubytko_double();" onkeydown="return false" id="datumprijezdu" name="datumprijezdu" min="<?php echo (new DateTime())->format('Y-m-d'); ?>" value="<?php echo (new DateTime())->format('Y-m-d'); ?>">
       <label class="form-control-placeholder" for="datumprijezdu">Datum příjezdu</label>
     </div>
     <div class="form-group">
       <input type="date" class="form-control" onchange="DateCheck();vypocet();ubytko_single();ubytko_double();" onkeydown="return false" id="datumodjezdu" name="datumodjezdu" value="<?php echo (new DateTime('tomorrow'))->format('Y-m-d'); ?>" min="<?php echo (new DateTime('tomorrow'))->format('Y-m-d'); ?>">
       <label class="form-control-placeholder" for="datumodjezdu">Datum odjezdu</label>
     </div>

JS

function vypocet() {
const _MS_PER_DAY = 1000 * 60 * 60 * 24;

// a and b are javascript Date objects
function dateDiffInDays(a, b) {
  // Discard the time and time-zone information.
  const utc1 = Date.UTC(a.getFullYear(), a.getMonth(), a.getDate());
  const utc2 = Date.UTC(b.getFullYear(), b.getMonth(), b.getDate());

  return Math.floor((utc2 - utc1) / _MS_PER_DAY);
}

// test it
var x = document.getElementById("datumprijezdu");
var datumprijezdu = x.value;
var y = document.getElementById("datumodjezdu");
var datumodjezdu = y.value;
const a = new Date(datumprijezdu);
    b = new Date(datumodjezdu),
    pocet_dnu = dateDiffInDays(a, b);
    document.getElementById("demo").innerHTML = pocet_dnu;
}

function ubytko_single() {
var ubytko_single_vysledek=0;
var ubytko_single_vysledek = pocet_dnu * 1980;
    document.getElementById("ubytko_single_vysledek").innerHTML = ubytko_single_vysledek + "CZK při možnosti single";
}

function ubytko_double() {
var ubytko_double_vysledek=0;
var ubytko_double_vysledek = pocet_dnu * 2260;
    document.getElementById("ubytko_double_vysledek").innerHTML = ubytko_double_vysledek + "CZK při možnosti double";
}

我尝试在互联网上搜索,但找到的脚本对我不起作用:/

【问题讨论】:

  • 你有什么代码可以用作脚手架吗?
  • 对不起,我添加了 HTML 代码。我还添加了 HTML 代码调用的功能。但是,该功能与本文的主题无关。因此,如果有人想在现有函数中插入函数,我会插入它们。
  • 只发布最少的代码来复制或演示问题。

标签: javascript php html date input


【解决方案1】:

这是您可以使用的基本实现。 :)

如果你有详细信息,我可以编辑我的答案。

var date1 = document.getElementById("date1");
var date2 = document.getElementById("date2");

function dateChecker()
{
  if (date1.valueAsDate > date2.valueAsDate)
  {
    
    date2.value = date1.value;
  } else
  {
    console.log("Dates are fine");
  }
}
<input type="date" id="date1">Date 1</input>
<br>
<input type="date" id="date2">Date 2</input>
<br>
<button id="submit" onClick="dateChecker()">Check Dates</button>

【讨论】:

  • OP 说:“如果违反条件,date2 字段将自动设置为与 date1 中相同的日期。”在 UI 中交换值不是一个好主意。由于值是字符串(大致是 ISO 8601),最好使用localeCompare
  • 我看错了。我还以为是换如果它被输入到另一个函数中,那么只放置一个条件会更容易。自从我回答以来,他添加了一些东西。
  • 如果有的话,您可以只使用 .valueAsDate,我已经编辑了逻辑以符合两者。感谢您的意见!
猜你喜欢
  • 2018-03-03
  • 2011-11-26
  • 2021-08-15
  • 2022-08-19
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2020-01-03
  • 2014-11-23
相关资源
最近更新 更多