Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 回车后清除HTML输入并防止换行_Javascript_Jquery_Html - Fatal编程技术网

Javascript 回车后清除HTML输入并防止换行

Javascript 回车后清除HTML输入并防止换行,javascript,jquery,html,Javascript,Jquery,Html,我想在用户按enter键时提交文本框的值,最后清除输入。我尝试了以下代码: input.keydown(function(e) { if (e.keyCode == 13) { e.preventDefault(); $(this).val(''); ... } 输入字段的文本按预期方式清除,但清除后,换行符仍输入到输入中。这意味着用户必须在每次发送消息后删除此换行符。除了设置一个间隔之类的黑客方法外,还有什么方法可以防止出现这个

我想在用户按enter键时提交文本框的值,最后清除输入。我尝试了以下代码:

input.keydown(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
        $(this).val('');
        ...
    }

输入字段的文本按预期方式清除,但清除后,换行符仍输入到输入中。这意味着用户必须在每次发送消息后删除此换行符。除了设置一个间隔之类的黑客方法外,还有什么方法可以防止出现这个新行吗?

如果您使用AJAX提交,您可以在收集AJAX负载的数据后清除输入


如果您正在执行常规页面更改提交,则可以添加一个清除输入的
onbeforeuload
回调。

按下enter键时只需返回false即可:

input.keydown(function(e) {
    if (e.keyCode == 13) {
        e.preventDefault();
        $(this).val('');
        return false;
    }
}

当然,这意味着您的最终用户将无法实际创建新行。在这种情况下,我通常有一个布尔变量,当按下/释放shift键时,该变量会发生变化。因此,如果shift已关闭,则不要提交,创建新行。

keydown
事件中返回
false
,这样可以防止事件冒泡,因此它实际上不会对文本框做任何操作

input.keydown(function(e) {
    if (e.keyCode == 13) {
        $(this).val('');
        e.preventDefault();
        return false;
    }
}

没问题,注意我的新品建议。如果我遇到一个阻止我在文本框中换行的应用程序,我会非常恼火。如果你得到了你需要的一切,记得接受。谢谢你的提示,我会的。直到现在我才接受这个答案。