#jquery
#jquery
Вопрос:
Мне нужно иметь возможность перейти к следующей строке после нажатия клавиши Enter (keycode == 13) после ввода некоторого текста. Это работает, если вы нажмете «Enter» перед вводом любого текста, но не после. Вот некоторые из моих сценариев
var keyPressedOnContactUsMessageHandler = function (e) {
if (e.which == 13 || e.keyCode == 13) {
$(this).append(" nn");
if ($("#ContactUsMessage").focus()) {
return false;
} else {
return true;
}
sendMessage();
blockEnterKeyHandler(e);
}
};
Ответ №1:
Я думаю, проблема, вероятно, в том, что у вас есть textarea
и вы пытаетесь добавить к нему содержимое append
. Содержимое HTML textarea
элемента имеет значение только при анализе страницы. После этого на содержащийся текст ссылается value
свойство. Вместо этого вы должны изменить это.
this.value = 'nn';
Я предполагаю, что ваш браузер щедр: если вы измените HTML до value
изменения, он value
соответствующим образом изменит. Лучше просто изменить value
самостоятельно.
Кроме того, $("#ContactUsMessage").focus()
всегда будет возвращать истинное значение. Если вы пытаетесь проверить, сфокусирован ли элемент, используйте is
:
if ($('#ContactUsMessage').is(':focus')) {
Обратите внимание, что это не работает в старых браузерах, если вы используете версию jQuery до версии 1.6.
Ответ №2:
Кроме того, после того, как вы это исправите, этот раздел
sendMessage();
blockEnterKeyHandler(e);
никогда не достигается, потому что вы всегда возвращаете что-то перед этим с помощью этого оператора if
if($("#ContactUsMessage").focus()) {
return false;
} else {
return true;
}