2016-11-15 2 views
-5

Когда вы удерживаете клавишу (без события KeyUp) текстовое поле выглядит какизбегать/предел длительное нажатие дает повторяющиеся символы через JS

'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.

У меня есть логика, которая переходит в бесконечный цикл, если одно слово (символьная строка без пробела) составляет> 70 ​​символов, и поэтому вы хотите, чтобы пользователь не вводил это.

Любые предложения о том, как это можно достичь строго через JS/jQuery?

(без использования KeyUp события)

+1

Проверьте это http://www.w3schools.com/TAgs/att_input_maxlength.asp – 11thdimension

+1

Похоже, вам нужно пересмотреть свою логику ... – Greg

+1

Используйте лучшую логику. – Gavin

ответ

1

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

var fired = false; 
 

 
$("#box").keydown(function(e) { 
 
    if (!fired) { 
 
    fired = true; 
 
    } else if (e.keyCode != 8) { // 8 is the keyCode for backspace 
 
    e.preventDefault(); 
 
    } 
 
}); 
 

 
$("#box").keyup(function() { 
 
    fired = false; 
 
}); 
 

 
$("#box").keyup(function() { 
 
    console.log("some other function that does something complicated..."); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="box" />

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

+0

, хотя это предотвращает «zzzzzzzzzzzzzz»; он также препятствует эффективному набору текста и навигации внутри текстового поля. есть ли у вас предложения, чтобы избежать этого? –

+0

@ Су-J: Помимо того, что вы не можете удерживать backspace, что «эффективная типизация», как вы думаете, предотвращается? Вы всегда можете проверить, какой ключ нажат, а также не предотвращать повторы для backspace или delete или любой другой ключ, который вы хотите разрешить. –

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