2

我想在用户按下回车时提交一个文本框的值,最后清除输入。我试过这段代码:

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

输入字段的文本按预期清除,但在清除后,换行符仍输入到输入中。这意味着用户每次发送消息后都必须删除此换行符。除了像设置间隔这样的黑客方法之外,有没有办法防止这个换行符出现?

4

3 回答 3

5

按下回车键时返回 false:

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

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

于 2013-04-23T10:21:46.423 回答
0

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

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

于 2013-04-23T10:18:52.767 回答
0

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

input.keydown(function(e) {
    if (e.keyCode == 13) {
        $(this).val('');
        e.preventDefault();
        return false;
    }
}
于 2013-04-23T10:22:56.177 回答