2015-07-06 4 views
2

Я создавал какое-либо приложение чата с помощью JavaScript, что позволяет один, чтобы отправить сообщение после того, как клавиша ввода нажимаютсяОчистить вход текстового поля после ввода ключа нажмите

window.onkeydown=function(event){ 
    if(event.keyCode==13){ 
     sendNew(); 
    } 
} 

и в() функции sendNew;

var msg=document.getElementById('txt').value.toString().trim(); 
    if(msg!=="") { 
    //send message   
    document.getElementById('txt').value = ""; 
    } 

При нажатии клавиши ввода, когда текстовое поле является OnFocus очищается текст, но, кажется, чтобы вставить символ новой строки, а курсор переходит к следующей строке текстового поля.

Как я могу избавиться от этого и иметь полностью пустую текстовую область?

ответ

3

Это потому, что поведение клавиши ввода по умолчанию заключается в том, чтобы вставить новую строку. Чтобы этого не произошло, return false от обработчика события keydown.

window.onkeydown=function(event){ 
    if(event.keyCode==13){ 
     sendNew(); 
     return false; // prevent default behavior if ENTER key 
    } 
} 
5

То, что вы должны сделать, это отменить поведение по умолчанию браузера при нажатии клавиши ввода (вы должны предотвратить браузер от добавления новой строки).

Решение: используйте event.preventDefault(). Документация: https://developer.mozilla.org/en/docs/Web/API/Event/preventDefault

Попробуйте этот код:

window.onkeydown=function(event){ 
    if(event.keyCode==13){ 
     sendNew(); 
     if(event.preventDefault) event.preventDefault(); // This should fix it 
     return false; // Just a workaround for old browsers 
    } 
} 

Некоторые разработчики забывают о event.preventDefault и писать return false вместо этого. Это плохая практика, и я бы предложил вам новый метод .

+1

В Chrome 53 'return false' на самом деле не исправил его для меня, но' event.preventDefault() 'сделал. –

 Смежные вопросы

  • Нет связанных вопросов^_^