Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как блокировать input для изменений, но не для отправки данных? (https://javascript.ru/forum/misc/70627-kak-blokirovat-input-dlya-izmenenijj-no-ne-dlya-otpravki-dannykh.html)

Walk 20.09.2017 16:13

Как блокировать input для изменений, но не для отправки данных?
 
При некоторых условиях необходимо заблокировать input от изменений, вначале сделал так:

document.getElementById('company').disabled = true;


Но оказалось, что такая блокировка блокирует и отправку данных из формы.

Как заблокировать input от изменений, но чтобы отправка данных из него выполнялась?

laimas 20.09.2017 16:17

document.getElementById('company').disabledreadonly

И почему JS, а не в атрибутах поля указать?

Walk 20.09.2017 16:22

Цитата:

Сообщение от laimas (Сообщение 464972)
document.getElementById('company').disabledreadonly

readonly не применяется через js :(


Цитата:

Сообщение от laimas (Сообщение 464972)
И почему JS, а не в атрибутах поля указать?

Потому что блокироваться input должен при определенных условиях, которые проверяю через JS

Walk 20.09.2017 16:26

Разобрался, нужно прописывать не:

document.getElementById('company').readonly = true;

а:
document.getElementById('company').setAttribute("readonly", "readonly");

Rasy 20.09.2017 16:30

Walk,
readOnly

laimas 20.09.2017 16:34

Цитата:

Сообщение от Walk
readonly не применяется через js

readOnly - большая.

laimas 20.09.2017 16:36

Walk,

если через атрибут, то проще - setAttribute("readonly", 1), ибо и так тоже будет true - .setAttribute("readonly", "пофигу");

Walk 20.09.2017 17:48

Цитата:

Сообщение от Rasy (Сообщение 464979)
Walk,
readOnly

Спасибо, работает)

Правда, с блоком форм возня не закончилась - надо еще блокировать select, а его readOnly не блокирует. Цвет поля меняется как бы на заблокированный, но по факту значение можно изменить.

laimas 20.09.2017 18:00

Цитата:

Сообщение от Walk
надо еще блокировать select

А это уже disabled.

Walk 20.09.2017 18:16

Цитата:

Сообщение от laimas (Сообщение 464992)
А это уже disabled.

Добавляю disabled - данные из данного селекта не уходят. Как будто там пусто.

Dilettante_Pro 20.09.2017 18:21

Walk,
Может, скрыть?

Rasy 20.09.2017 18:29

Walk,
elem.style.pointerEvents = 'none';

Walk 20.09.2017 18:32

Цитата:

Сообщение от Rasy (Сообщение 464997)
Walk,
elem.style.pointerEvents = 'none';

Спасибо!

Правда этот вариант не меняет цвет поля, поэтому сделал следующее:

document.getElementById('select_id').setAttribute("readonly", "readonly");

document.getElementById('select_id').style.pointerEvents = 'none';


Первая строчка меняет цвет селекта как бы на заблокированный, а вторая его непосредственно блокирует.

Всем спасибо за помощь. Без вас бы ниосилил)

laimas 20.09.2017 18:38

Цитата:

Сообщение от Walk
Добавляю disabled - данные из данного селекта не уходят.

Нужно запрещать выбор самих опций, то есть:

<form>
<select name="as">
<option value="1" disabled>11111</option>
<option value="2" selected="">22222</option>
</select>
<button>GO</button>
</form>


Часовой пояс GMT +3, время: 12:45.