<input type ="date> onchange激发太多

tod*_*dmo 5 javascript html5 google-chrome

至少在Chrome中,<input type="date> onchange事件会在每次更改日期的击键时触发,例如,如果您键入年份,则会在每次按键时触发.

但是,他们还没有改变日期!似乎这是oninput应该做的事情.我认为这onchange是为了改变整体.当我输入0,1,1,5,1,9,8,7(01/15/1997)时,这不是8次更改,即1.

你可以说,检查一下这个值onblur,但是即使他们只是在场上跳过并且它没有改变,我的事件也会触发.

我的处理程序是一个通用的ajax回发例程,它不能/不能检查旧值和新值.

是不是只有变化才会触发事件(但是当变更完成时)?

也许在onblur我可以查看旧值,但我不知道如何.

<input type="date" onchange="alert('changed')">
Run Code Online (Sandbox Code Playgroud)

小智 2

<input type="date" id="mydate">
Run Code Online (Sandbox Code Playgroud)

还有杰斯:

let mydate=window.document.getElementById("mydate");
let olddate=mydate.value;
let isChanged = function(){
  if(mydate.value!== olddate){
    olddate=mydate.value;
    return true;
  };
  return false;
};
mydate.addEventListener("blur", function(){
  if(isChanged())
    alert("changed!");
});
Run Code Online (Sandbox Code Playgroud)