Запретить ввод текстового поля, даже если поле НЕ отключено/только для чтения

Могу ли я запретить ввод текстового поля HTML, даже если мое поле НЕ отключено или доступно только для чтения? У меня есть это требование.

Может быть, я могу заблокировать все входы через JS или jQuery?


person gene b.    schedule 26.02.2016    source источник


Ответы (5)


См. эту скрипту.

Вы можете использовать jQuery для этого. Вы можете сделать это, как показано ниже.

$('input').keypress(function(e) {
    e.preventDefault();
});

ИЛИ

вы можете просто вернуть false вместо использования preventDefault(). Смотрите скрипт ниже

$('input').keypress(function(e) {
    return false
});

См. скрипту.

ИЛИ

Сильно упрощенная версия без Javascript будет такой, как показано ниже. Просто измените свой HTML, как показано ниже

<input type="text" onkeypress="return false;"/>

См. скрипту.

person Lal    schedule 26.02.2016

Если вы хотите сделать поле полным неразрешимым.

$('input').focus(function(e) {
    $(this).blur();
});

Пример: https://jsfiddle.net/DinoMyte/up4j39qr/15/

person DinoMyte    schedule 26.02.2016

Если вы ищете ввод только для чтения, простой способ — добавить «только для чтения» к входному HTML. Например,

<input type="number" readonly>

При этом он не мешает отправке формы или другим слушателям событий. Ввод с параметром «только для чтения» по-прежнему будет отправлен, но не с параметром «отключен».

Для справки: https://www.w3schools.com/TAGS/att_input_readonly.asp

person Kyle-Law    schedule 07.01.2021

Вы можете вернуть false в событии input или использовать .val('') для сброса поля, когда каждый раз пользователь пытается что-то написать:

$('input').input(function(e) {
    $(this).val('');
});

Надеюсь это поможет.


$('input').on('input', function(e) {
    $(this).val('');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />

person Zakaria Acharki    schedule 26.02.2016

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

$('input').keydown(function(e) {
  e.preventDefault();
});

Документация: https://api.jquery.com/keydown/

person Aljoša    schedule 18.12.2019