【发布时间】:2020-01-09 07:57:01
【问题描述】:
我有一个脚本,我想在按下 shift+enter 时添加 Return,它与单个 Enter 一起工作正常,但由于 javascript 的错误未选择确切的内容,它没有使用 \n 添加 shift+Enter .我收到以下错误
Uncaught TypeError: Cannot read property 'substring' of undefined
at HTMLFormElement.<anonymous> (86:206)
at HTMLFormElement.dispatch (jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:5227)
at HTMLFormElement.elemData.handle (jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:4879)
这是我的代码
$(document).ready(function(){
$('.new_message').keyup(function (event) {
if (event.keyCode === 13 && !event.shiftKey) {
event.preventDefault();
var values = $(this).serializeArray();
App.conversation.speak(values);
$(this).trigger('reset');
} else {
if(event.keyCode === 13 && event.shiftKey){
var content = $(this).serializeArray();
var caret = getCaret($(this));
this.value = content.substring(0, caret - 1) + "\n" + content.substring(caret, content.length);
}
}
});
});
我只想在用户按 shift+enter 时添加回车,如果他按正常回车,它工作正常并发送短信。我正在使用带有套接字的 Rails 向用户发送聊天消息。
【问题讨论】:
-
content.substring是content第一次出现在您共享的代码中。为什么不应该是undefined? -
抱歉内容 = 值,我正在使用代码来解决问题。实际上 content = $(this).serializeArray() ,我也尝试过 content = this 但它不起作用。
-
现在
content是serializeArray()的返回值。所以它是一个数组。那么它为什么要有substring方法呢?它不是一个字符串。
标签: javascript jquery actioncable