【问题标题】:textarea not submiting on pressing enter the second time after the first submittextarea 在第一次提交后第二次按 Enter 时未提交
【发布时间】:2017-03-17 11:58:24
【问题描述】:

当输入字段不为空时,我有一个提交的文本区域。假设我想防止在同时按下回车键时多次提交,它只在每次刷新页面时提交。这是代码:

window.formWasSubmitted = false;

    document.getElementById('new-input').addEventListener('keyup', function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13 && $.trim($(this).val()) && !window.formWasSubmitted) { // enter key press     && $(this).val().length > 0
            e.preventDefault();
            window.formWasSubmitted = true;
            send();
        }
        //window.formWasSubmitted = false;
    });

请问如何在每次输入数据时不刷新页面的情况下允许 textarea 提交

【问题讨论】:

  • 您有一个条件 !window.formWasSubmitted 会阻止您再次提交,因为您已经将其设置为 true。您可以删除该条件,我看不出您需要它的原因
  • 是的!如果我在多次按下 Enter 键盘时删除它,它会在 textarea 中提交与那些时间一样多的相同内容
  • 那么文本框不应该只在按下回车键时发布吗?这通常是它的工作原理
  • 是的,它应该但是一次按5次,它会发布五次相同的内容
  • 然后你需要在你的 send() 方法中将标志设置为 true 并且还应该清除文本字段。

标签: javascript jquery html forms


【解决方案1】:

您的问题不是很清楚,但听起来您想消除回车键的抖动。那是对的吗?由于您使用的是 JQuery,请看一下:Debounce function in jQuery

【讨论】:

  • 是的。我想在第一次之后去抖动回车键
  • 那么我相信您需要做的就是摆脱window.formWasSubmitted代码并将send();更改为$.debounce(250, send);
  • 如果我同时按三下回车键,它会发送三遍内容,所以它不会去抖动
  • 好的,我认为您必须将 debounce 函数的结果分配给一个变量,例如事件处理程序的 var sendDebounced = $.debounce(250, send); OUTSIDE,然后在事件处理程序内部使用 sendDebounced();。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
相关资源
最近更新 更多