Как сделать инпут неактивным

Работа с input: подборка полезных решений на HTML и CSS

Содержание:

Как сделать инпут неактивным

В рамках работы над полями ввода (input) существуют не всегда очевидные и, как правило, редко используемые CSS-приёмы и HTML-атрибуты, позволяющие без использования JavaScript преобразовать внешний вид элементов формы и позаботиться об их юзабилити. Вниманию читателя представляется небольшая подборка таких «фишек» — как уже давно применяемых, так и относительно новых, ещё не поддерживаемых всеми браузерами.

Не смотря на кажущуюся тривиальность, описываемые ниже решения далеко не всегда применяются в процессе создания различных форм ввода на сайте. Список включает в себя наиболее необычный по мнению автора CSS-код, решающий разрозненные задачи — от изменения цвета каретки до затенения символов в поле.

Стиль выделения ошибок

Стиль выделения текста

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

Для ::selection есть пара нюансов, относящихся не только к input :

С учетом особенностей Webkit цвета при выделении рекомендуется задавать следующим образом:

Добавление эллипсиса

Когда ширина текстового содержимого обычного input type=»text» больше его фактической ширины, текст по умолчанию обрезается по правому краю и появляется возможность горизонтальной прокрутки. Чтобы сделать обрезку текста визуально привлекательнее через многоточие (эллипсис), следует применить text-overflow :

Удаление лишних элементов внутри полей в IE

Начиная с версии 10 в Internet Explorer такие типы полей как text или password по умолчанию содержат внутри себя дополнительные элементы, вставляемые браузером для улучшения юзабилити, — иконку очистки поля (крестик) и отображения пароля (глаз). Они легко удаляются благодаря соответствующим псевдоэлементам:

Удаление желтого фона при автозаполнении полей

В Webkit после автозаполнения (как правило, форм с логином и паролем) поля приобретают желтый фон и черный цвет текста, которые добавляются непосредственно стилями браузера:

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

Удаление стрелки в поле с datalist

При использовании атрибута list (подробнее рассмотрен ниже) в браузерах Webkit к input добавляется иконка в виде стрелки, указывающая на возможность выбора значений из выпадающего списка. За отображение иконки отвечает специальный псевдоэлемент, который может быть скрыт:

Увеличение затенённых символов пароля

Как известно, вводимые в input type=»password» данные затеняются другими символами (как правило, маской служит астериск или черный круг). В Webkit размер этих символов значительно меньше, чем в остальных браузерах. Для их увеличения рекомендуется использовать для поля с паролем шрифт более жирного начертания. Из безопасных шрифтов на эту роль хорошо подходит Verdana, а так как изменения необходимы только для Webkit, селектор можно обернуть в специфический @media :

Затенение символов в поле ввода

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

Существует кроссбраузерная альтернатива text-security, предполагающая замету шрифта в поле на другой шрифт, содержащий лишь три вышеназванных символа. Существенный недостаток решения в том, что оно не станет работать, если пользователь запретит подключение специфичных шрифтов с внешних ресурсов.

Полезные HTML-атрибуты

Стоит так же отметить, что несмотря на все атрибуты и способы стилизации, возможности стандартного текстового поля сильно ограничены. Если требуется создать многофункциональную область ввода аналогичную тем, что используются в месседжерах и социальных сетях, например, input со вставкой emoji, следует прибегнуть к помощи HTML5-атрибута contenteditable.

Автофокус на элементе формы

Атрибут autofocus позволяет заранее сфокусироваться на элементе формы, что в определенных ситуациях является прекрасной альтернативой методу HTMLElement.focus() в JS:

Предопределение формата вводимых в поле данных

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

«Некоторые устройства, в частности с виртуальными клавиатурами, могут предоставлять пользователю несколько методов ввода. Например, при вводе номера кредитной карты пользователь захочет видеть только клавиши для цифр 0−9, тогда как при вводе имени предпочтительнее работать с полем, которое автоматически начинает каждое слово с заглавной буквы». Спецификация HTML

Кроме вышеперечисленных значений браузеры так же принимают:

Перевод вводимых данных в верхний регистр букв

Например, подобным образом может выглядеть область ввода для контента, который разработчик хочет видеть оформленным как абзац:

Добавление готовых вариантов для ввода

Для добавления в поле доступных опций в его атрибуте codelist указывается идентификатор списка, которым, в свою очередь, должен обладать datalist :

Источник

Как сделать кнопку неактивной, пока не отмечен чекбокс

Маразм крепчал. Но. поехали.

Итак, на большинстве блогов, как минимум три области где, в соответствии с известными требованиями, пользователь, прежде чем отправить какие-либо персональные данные, должен явно подтвердить на это своё согласие. Типа он изучил и принимает политику конфиденциальности сайта и некие пользовательские соглашения. При нашем-то менталитете кто-нибудь читает всю эту галиматью? Чай, не дикий запад. Но ладно, идём дальше.

Общий принцип

В общем виде код выглядит так:

Обратите внимание, что всё дело тут в ID кнопки. В данном примере чекбокс проверяет элемент страницы с ID = «submit» и делает его активным или неактивным в зависимости от своего состояния.

Если реальный ID элемента иной, то его и нужно прописать в коде чекбокса.

Реальные примеры

Форма подписки на рассылку

Код формы подписки, предоставляемый сервисами, без пол-литра разобрать весьма проблематично. Вот, например, код от моего SendPulse:

Всё просто и понятно, не так ли? Как сделать инпут неактивнымНо нам и не нужно разбираться в этом коде, тем более менять его. Нам нужно найти в нём только код кнопки. Он может начинаться с тега либо с

У меня он выглядит так:

Вот такой вот код кнопки. Обратите внимание на ID этой кнопки!

Вставляем перед кнопкой наш универсальный чекбокс из первого примера, в котором меняем ID на тот, который присвоен кнопке. Реально у меня вот такая вставка:

Как видите, после чекбокса я прописал ещё текст со ссылками на политику конфиденциальности.

Как сделать инпут неактивным

Но по сути страшного ничего и нет. Найти код кнопки можно и вставить чекбокс тоже. Сложностей не должно возникнуть.

Форма обратной связи

Здесь проще. В том смысле, что код тут более читабельный и легче найти нужную кнопку.

Опять-таки покажу на своём примере:

Как видите всё тоже самое, только уже с привязкой к новому ID. Да, и здесь, в отличие от регистрации на подписку кнопка реализована не тегом «button», а тегом «input», что ровным счётом ничего не меняет.

Надеюсь, что принцип понятен и сложностей у вас никаких не возникнет.

А я, кстати, заметил что в моей форме обратной связи слетели все стили. Скорее всего это плагин Autooptimise постарался. А может и нет. Потом разберусь, фигня всё это. Сейчас немного не до стилей мне.

Форма комментариев

Ну вот и всё. Надеюсь статья оказалась для вас полезной.

Источник

Как сделать инпут неактивным

Добрый день. Есть моделька:

Из нее делаю форму:

Потом в шаблоне вывожу эту форму используя верстку bootstrap:

При этом у меня выводятся те два поля, которым я указал виджет HiddenInput, просто как лэйблы. Как сделать так чтобы и классы bootstrap’а использовать, но и скрытые поля не выводить. Е еще, как сделать так чтобы поле выводилось, но было неактивным? Виджета я такого не нашел.

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Е еще, как сделать так чтобы поле выводилось, но было неактивным? Виджета я такого не нашел.

Можно свой виджет создайть, вообще в виджет можно передать attrs с нужным атрибутом, или просто в js навешать.

Ага, спасибо, это то что нужно. А про передачу атрибутов, сейчас почитаю.

Да, передал, вроде все хорошо. Но теперь это значение не передается в форме почему-то. Вот что у меня выдавало раньше:

При этом форма передавалась и данные обрабатывались. В том числе и по полю ‘ctype’. Вот что у меня стало сейчас:

При этом, когда я пытаюсь обратится к данным формы:

То я получаю такую ошибку:

Вмдно что в форме теперь нет ключа ‘ctype’. В чем может быть дело, не подскажете?

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным

Как сделать инпут неактивным

Возникла проблема с этим readonly. Оно с виду вроде как и не изменяемое, но если аиджет Select то тогда можно все равно поменять значение. Выход один, делать disabled. Но тогда значения из формы не передаются в request. Вопрос, как потом дополнить нехватающие поля нужными значениями. Т.е. как во вьюхе в полученной форме вставить значения в некоторые поля? Потому что как инициализировать форму значениями, это описано в доке, а вот как дополнить, непонятно.

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

А селект разве readonly не может быть? Я через JS убирал disabled перед сабмитом, когда про readonly не знал.

Как сделать инпут неактивным

Как сделать инпут неактивным

Т.е. как во вьюхе в полученной форме вставить значения в некоторые поля?

Как сделать инпут неактивным

Как сделать инпут неактивным

Возникла проблема с этим readonly. Оно с виду вроде как и не изменяемое, но если аиджет Select то тогда можно все равно поменять значение.

Выставь готовый кусок html-кода с селектом.

2 alerion: Может. И свиду он как будто бы и не изменяемый, но если кликнешь на него то выпадает список выбора.

2 dest81: Не понял что ты имел ввиду.

Как я этого добился, приведу всю вьюху, она коротенькая:

Тут поля rate и market_cost, это те два поля которы должны быть редактируемыми, остальные все только на просмотр. Я вынужден сделать еще один запрос в базу к модели Knumber (kn2) потому что из-за связи модельной формы и записи в таблице те поля, которые в форме отдаются пустыми, они и в соответствующем объекте kn тоже оказываются пустыми. Долго мучался, пока не понял что это так и не понял что нужно создать еще kn2.

Может кому поможет.

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

Источник

Как сделать инпут неактивным

Добрый день. Есть моделька:

Из нее делаю форму:

Потом в шаблоне вывожу эту форму используя верстку bootstrap:

При этом у меня выводятся те два поля, которым я указал виджет HiddenInput, просто как лэйблы. Как сделать так чтобы и классы bootstrap’а использовать, но и скрытые поля не выводить. Е еще, как сделать так чтобы поле выводилось, но было неактивным? Виджета я такого не нашел.

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Е еще, как сделать так чтобы поле выводилось, но было неактивным? Виджета я такого не нашел.

Можно свой виджет создайть, вообще в виджет можно передать attrs с нужным атрибутом, или просто в js навешать.

Ага, спасибо, это то что нужно. А про передачу атрибутов, сейчас почитаю.

Да, передал, вроде все хорошо. Но теперь это значение не передается в форме почему-то. Вот что у меня выдавало раньше:

При этом форма передавалась и данные обрабатывались. В том числе и по полю ‘ctype’. Вот что у меня стало сейчас:

При этом, когда я пытаюсь обратится к данным формы:

То я получаю такую ошибку:

Вмдно что в форме теперь нет ключа ‘ctype’. В чем может быть дело, не подскажете?

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным

Как сделать инпут неактивным

Возникла проблема с этим readonly. Оно с виду вроде как и не изменяемое, но если аиджет Select то тогда можно все равно поменять значение. Выход один, делать disabled. Но тогда значения из формы не передаются в request. Вопрос, как потом дополнить нехватающие поля нужными значениями. Т.е. как во вьюхе в полученной форме вставить значения в некоторые поля? Потому что как инициализировать форму значениями, это описано в доке, а вот как дополнить, непонятно.

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным Как сделать инпут неактивным

А селект разве readonly не может быть? Я через JS убирал disabled перед сабмитом, когда про readonly не знал.

Как сделать инпут неактивным

Как сделать инпут неактивным

Т.е. как во вьюхе в полученной форме вставить значения в некоторые поля?

Как сделать инпут неактивным

Как сделать инпут неактивным

Возникла проблема с этим readonly. Оно с виду вроде как и не изменяемое, но если аиджет Select то тогда можно все равно поменять значение.

Выставь готовый кусок html-кода с селектом.

2 alerion: Может. И свиду он как будто бы и не изменяемый, но если кликнешь на него то выпадает список выбора.

2 dest81: Не понял что ты имел ввиду.

Как я этого добился, приведу всю вьюху, она коротенькая:

Тут поля rate и market_cost, это те два поля которы должны быть редактируемыми, остальные все только на просмотр. Я вынужден сделать еще один запрос в базу к модели Knumber (kn2) потому что из-за связи модельной формы и записи в таблице те поля, которые в форме отдаются пустыми, они и в соответствующем объекте kn тоже оказываются пустыми. Долго мучался, пока не понял что это так и не понял что нужно создать еще kn2.

Может кому поможет.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *