Как отключить клавишу Enter / Return после того, как из-за нее выполнена функция? - PullRequest
1 голос
/ 15 июня 2011

У меня есть эта функция, где #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 ]

4 голосов
/ 15 июня 2011

Как насчет event.preventDefault ()

2 голосов
/ 15 июня 2011

Я проверил это, это работает.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;
    }                                               
});

Хотя мне интересно, если вы не хотите когда-либо иметь новую строку, почему вы используете текстовую область, почему бы не использовать тип ввода =вместо текста?

2 голосов
/ 15 июня 2011

попробуйте это event.stopImmediatePropagation ()

$('#text_comment').live('keypress',function (e) {       
          if(e.keyCode == 13) {   
               e.stopImmediatePropagation()
       ///rest of your code
  }
});
2 голосов
/ 15 июня 2011

Попробуйте и остановите распространение вашего события (см. http://snipplr.com/view/19684/stop-event-propagations/) при вводе случая if(e.keyCode == 13).

1 голос
/ 15 июня 2011

Ответ здесь http://jsfiddle.net/Z9KMb/

...