Javascript 在用户输入时“立即”比较日期值
Javascript 在用户输入时“立即”比较日期值,javascript,html,date,input,Javascript,Html,Date,Input,这个问题可能与另一个问题类似:
但我不想使用按钮,只是让它立即生效
我有两个日期类型的输入,我想在它们之间进行比较
选择一个日期。
自从
直到
比较一下这个
函数验证{
var date1=new Datedocument.getElementById'since'。值;
var date2=new Datedocument.getElementById'until'。值;
ifdate2
这个问题可能与另一个问题类似:
但我不想使用按钮,只是让它立即生效
我有两个日期类型的输入,我想在它们之间进行比较
选择一个日期。
自从
直到
比较一下这个
函数验证{
var date1=new Datedocument.getElementById'since'。值;
var date2=new Datedocument.getElementById'until'。值;
ifdate2我认为您可以使用onchange事件来实现这一点。我对你的代码片段做了一点修改,并为何时不进行验证设置了一个简单的条件。你可以把它调整得更复杂
选择一个日期。
自从
直到
功能验证{
var input1=document.getElementById'since'。值;
var input2=document.getElementById'until'。值;
ifinput1!=&input2!={
var date1=新的Dateinput1;
var date2=新的Dateinput2;
ifdate2我认为您可以使用onchange事件来实现这一点。我对你的代码片段做了一点修改,并为何时不进行验证设置了一个简单的条件。你可以把它调整得更复杂
选择一个日期。
自从
直到
功能验证{
var input1=document.getElementById'since'。值;
var input2=document.getElementById'until'。值;
ifinput1!=&input2!={
var date1=新的Dateinput1;
var date2=新的Dateinput2;
ifdate2您需要小心使用哪个事件,以避免意外后果。输入和更改事件可能会在用户在日期的最后一个空白部分输入任何数字时立即触发,由于对输入的支持不一致,因此在不同浏览器中不一定一致
例如,在Chrome中,如果用户输入12作为月份,31作为日期,然后在年份中输入2,打算进入2018年,输入2后,输入和更改事件将立即触发,在您的场景中,验证功能将在用户完成输入年份之前,将12/31/0002与其他日期进行比较,这将在用户尝试输入剩余年份数字时重复发生。根据您通知用户验证结果的方式,您可能能够优雅地解决此问题,但如果您使用alert,则效果不太好
因此,使用模糊之类的事件触发验证比较可能更安全。比如:
const-since=document.querySelector'since';
const until=document.querySelector'until';
const message=document.querySelector'message';
const compareDates==>{
设sval=since.value;
设uval=until.value;
如果sval&&uval&&uval您需要小心使用哪个事件,以避免意外后果。输入和更改事件可能会在用户输入日期最后一个空部分中的任何数字时触发,因为不一定在浏览器之间一致,因为支持的不一致
例如,在Chrome中,如果用户输入12作为月份,31作为日期,然后在年份中输入2,打算进入2018年,输入2后,输入和更改事件将立即触发,在您的场景中,验证功能将在用户完成输入年份之前,将12/31/0002与其他日期进行比较,这将在用户尝试输入剩余年份数字时重复发生。根据您通知用户验证结果的方式,您可能能够优雅地解决此问题,但如果您使用alert,则效果不太好
因此,使用模糊之类的事件触发验证比较可能更安全。比如:
const-since=document.querySelector'since';
const until=document.querySelector'until';
const message=document.querySelector'message';
const compareDates==>{
设sval=since.value;
设uval=until.value;
如果sval&&uval&&uval我向您推荐Momente.js,它非常流行的库date1.isBeforedate2返回Boolean如何使用php?我将在不使用按钮的情况下移除标记-是的,设置onKeyDown或keydup。。调用validate的两个输入上的侦听器。但是消息不应该是警报,而应该是消息和/或输入周围的红色边框。@Jeff。如果我输入日期是可以的,但是如果我只选择了日期,它不会显示消息错误。但是我不想使用按钮,只需将其设置为即时。尽快什么?我向你推荐Momente.js,它非常流行的库date1.isBeforedate2返回Boolean如何使用php?我将在不使用按钮的情况下移除标记-是的,设置onKeyDown或keydup。。调用validate的两个输入上的侦听器。但是,该消息不应该是警报,而是一条消息,和/或输入周围的红色边框。@Jeff。如果我输入日期是可以的,但是如果我只选择了日期,它不会显示消息错误。但是我不想使用按钮,只需将其设置为即时。一旦发生什么?如果用户返回到第一个输入,使用这样的警报会让用户陷入一个永无止境的循环。第二个输入触发模糊事件,显示警报。一旦它被解除,就会触发另一个模糊事件,以此类推。@RobG-好的观点。编辑答案以删除通知用户日期为“确定”的不必要警报,因此,现在代码段仅在截止日期早于起始日期时触发警报,避免人们在运行代码段时陷入恼人的循环。未修复。第一个输入输入2018-10-10,第二个输入2018-10-11,返回第一个输入2018-10-12,点击tab…;-如果不使用警报,修复起来就容易多了。@RobG-whoa。。。我还在想为什么alert会以这种方式与focus事件交互。现在,我只是把它添加到我的原因列表中,为什么除了在运行中检查一些东西之外,警报没有什么用处。这一次修复了答案。如果用户返回到第一个输入,使用这样的警报会让用户陷入一个永无止境的循环。第二个输入触发模糊事件,显示警报。一旦它被解除,就会触发另一个模糊事件,以此类推。@RobG-好的观点。编辑答案以删除通知用户日期为“确定”的不必要警报,因此,现在代码段仅在截止日期早于起始日期时触发警报,避免人们在运行代码段时陷入恼人的循环。未修复。第一个输入输入2018-10-10,第二个输入2018-10-11,返回第一个输入2018-10-12,点击tab…;-如果不使用警报,修复起来就容易多了。@RobG-whoa。。。我还在想为什么alert会以这种方式与focus事件交互。现在,我只是把它添加到我的原因列表中,为什么除了在运行中检查一些东西之外,警报没有什么用处。这次修正了答案。