Кнопка внутри ввода текста - HTML - PullRequest
5 голосов
/ 23 декабря 2011

По сути, у меня есть текстовое поле на моей веб-странице, и я пытаюсь добавить кнопку «Очистить», как в iOS. У меня нормальный ввод и тег img (с кнопкой сброса). До сих пор я использовал относительное позиционирование CSS, чтобы изображение выглядело как текстовое поле.

Я установил, что изображение исчезает, когда текстовое поле теряет фокус (onfocus / onblur для ввода) с помощью javascript. У меня есть несколько проблем:

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

  2. Я не могу переориентировать ввод текста после щелчка, используя document.getElementById ('searchbox'). Focus (); (Я проверил, что идентификатор правильный).

Так что я думаю, что я делаю это не лучшим образом, мне интересно, могу ли я как-то лучше сгруппировать кнопки ввода и сброса (они оба в одном и том же режиме сейчас)? И пока я занимаюсь этим, есть ли способ установить скрытие / исчезновение с помощью CSS? Как и в случае с вводом # searchbox: селектор фокуса, измените свойства img # searchreset

Спасибо!

Ответы [ 3 ]

2 голосов
/ 24 декабря 2011

Вы не можете использовать фреймворк javascript?Если вы можете, вы можете использовать jquery, например, есть много плагинов, которые делают свое дело ...

Вот учебник:

http://viralpatel.net/blogs/2011/02/clearable-textbox-jquery.html

Лично яНе нравится это руководство «изменение поведения компонента», потому что если вы перенесете свое приложение на мобильное устройство или используете его в браузере, который по умолчанию включает эту функцию, это будет выглядеть ужасно.

0 голосов
/ 29 декабря 2011

Я создал нечто подобное для проекта, над которым я работал .Основным отличием является то, что изображение было видно в любое время из соображений удобства использования.

Группировка ввода и кнопки:

Для первой части вашего вопроса я применил подход, заключающийся в том, чтобы использовать родительский контейнер для хранения как текстового поля, так и кнопки.Это позволит вам использовать подход Apple к поиску.Они использовали спрайт css ( tutorial ) вместо svg для изображения.Если вы используете браузер, который позволяет вам «проверять элемент», вы можете перейти на их сайт и посмотреть, как они это делают.

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

Скрыть / исчезнуть:

Скрывать и исчезать, используя только CSS,возможный.Однако вы можете создать два класса, один для скрытия, а другой для показа кнопки.Затем в javascript, когда текстовое поле получает фокус, вы можете установить видимость кнопки как «видимую», а при размытии - «скрытую».

Рекомендация JS:

Вы должны посмотретьиспользовать прослушиватели событий ( tutorial ) вместо атрибутов HTML для определения ваших нажатий или нажатий.Это гораздо чище и элегантнее.Здесь я бы сказал, что использование фреймворка, такого как jQuery, значительно упростит задачу.Это позволяет вам устанавливать прослушиватели событий и не беспокоиться о старых браузерах и различных реализациях стандарта.

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

0 голосов
/ 29 декабря 2011

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

...