使用回车键阻止多个时间表单提交

时间:2016-07-19 10:43:00

标签: jquery enter

以下是我的代码

$('#myDIV').keydown(function (event) {
      var key=event.which || event.charCode;
      if(key == 13)  // the enter key code
      {
        event.preventDefault();
        importItem();
      }
});

当我多次按下enter按钮时,多次调用importItem(),我该如何防止这种情况?我没有在这里提交fucntion来使用issubmitted类型的代码。

3 个答案:

答案 0 :(得分:1)

{{1}}

答案 1 :(得分:1)

您可以通过创建一个事件来防止在您验证其数据后提交,例如:

/bin/sh
const form = document.querySelector("form")

function importItem(e){
  // Your function...

  e.preventDefault() // Remove this
  console.log("Form submitted")

  form.removeEventListener("submit", importItem)
  form.addEventListener("submit", e => e.preventDefault())
}

form.addEventListener("submit", importItem)

注意:使用了第一个 <form> <input type="text" placeholder="Hold enter key"> </form>,因此表单无法重定向页面,您可以将其删除。

答案 2 :(得分:0)

使用setTimeout()来延迟和阻止多次执行代码。

    var timeout = null;
    $('#myDIV').keydown(function (event) {
          var key=event.which || event.charCode;
          if(key == 13)  // the enter key code
          {
            event.preventDefault();
            if(timeout != null){
                clearTimeout(timeout);
                timeout = null;
            }
            timeout = setTimeout(function(){
               importItem(); 
            }, 1000);
          }
    });