Как отключить клавишу Enter/Return после того, как из-за нее выполнена функция?
У меня есть эта функция, где #text_comment это идентификатор текстовой области:
$('#text_comment').live('keypress',function (e) {
if(e.keyCode == 13) {
textbox = $(this);
text_value = $(textbox).val();
if(text_value.length > 0) {
$(this).prev().append('<div id="user_commenst">'+text_value+'</div>');
$(textbox).val("");
}
}
});
Происходит то, что текст добавляется при нажатии клавиши ввода / возврата (keyCode 13), но он также перемещает текст на строку вниз, как предполагается, клавиша ввода / возврата.
Это происходит, даже если я установил значение текстового поля на "".
5 ответов
Попробуйте это событие..stopImmediatePropagation()
$('#text_comment').live('keypress',function (e) {
if(e.keyCode == 13) {
e.stopImmediatePropagation()
///rest of your code
}
});
Попробуйте остановить распространение вашего события (см. http://snipplr.com/view/19684/stop-event-propagations/) при входе в if(e.keyCode == 13)
дело.
Я проверил это, это работает. Enter не создает новую строку.
$('#text_comment').live('keypress',function (e) {
if(e.keyCode == 13) {
textbox = $(this);
text_value = $(textbox).val();
if(text_value.length > 0) {
$(this).prev().append('<div id="user_commenst">'+text_value+'</div>');
$(textbox).val("");
}
return false;
}
});
Хотя мне интересно, если вы не хотите когда-либо иметь новую строку, почему вы используете текстовую область, почему бы вместо этого не использовать input type='text'?