我想创建简单的自动提交。例如,如果用户1秒钟未在输入中键入任何内容或按Enter键,则表示已提交。我的代码:



$(document).on('keypress', $('input'), function(e) {
  console.log('clear')

  clearInterval(SubmitInterval);

  if (e.which == 13) {
    console.log('submit')
  }

  var SubmitInterval = setInterval(function() {
    console.log('submit')
    clearInterval(SubmitInterval);
  }, 1000);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type=text id=1 />





但是效果很差。
谢谢

最佳答案

问题是由于您在每次按键时重新定义了SubmitInterval变量。而是在事件处理程序之外声明一次。尝试这个:



var submitInterval;

$(document).on('keypress', 'input', function(e) {
  console.log('clear')

  clearInterval(submitInterval);

  if (e.which == 13) {
    console.log('submit')
  }

  submitInterval = setInterval(function() {
    console.log('submit')
    clearInterval(submitInterval);
  }, 1000);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type=text id=1 />

07-26 01:37