2009-10-14 4 views
0

На странице site Chris Coyer он использует красивую маленькую поисковую строку. Мне любопытно узнать, как вы получите текст в окне поиска, чтобы исчезнуть и снова появиться, когда вы выходите из окна.Текст окна поиска - Показать скрытую функцию

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

<input type="text" value="Search" onfocus="if (this.value=='Search') this.value='';"/> 

Кроме того, в Safari есть неприятная граница вокруг поля ввода, когда я щелкнув внутри. Каков код для избавления от этого?

Спасибо!

ответ

1

Я не верю, что вы можете удалить границу в Safari, хотя и открытую для исправлений.

Чтобы получить текст появится снова при нажатии кнопки из окна поиска, вы можете использовать это:

<input onblur="if (this.value == '') this.value ='Search';" /> 
+0

Фактически вы можете удалить границу в сафари. – fmz

4

Чтобы сбросить текст поиска, добавьте ONBLUR:

onblur="if (this.value=='') this.value='Search';" 

так ваше поле ввода становится:

<input type="text" value="Search" onfocus="if (this.value=='Search') this.value='';" onblur="if (this.value=='') this.value='Search';"/> 

также для границы Safari, добавьте это в CSS:

input[type=text]:focus, 
input[type=password]:focus { 
    outline: 0 none; 
} 
+0

Отличная помощь! Благодарю. – fmz

+1

Однако обратите внимание, что по причинам доступности не рекомендуется удалять контур: http://webaim.org/blog/plague-of-outline-0/ – jao

2

Вы можете избавиться от дублирования статического значения, если вы сделаете использование собственности DefaultValue

Сравните это

<input type="text" value="Search" onblur="if ('' == this.value) this.value = 'Search';" onfocus="if ('Search' == this.value) this.value='';"/> 

, который имеет три экземпляра statc строки «Поиск», чтобы это

<input type="text" value="Search" onblur="if ('' == this.value) this.value = this.defaultValue;" onfocus="if (this.defaultValue == this.value) this.value='';"/> 

который имеет только один.

Но если вы действительно хотите перенести это на «следующий уровень», вы можете реализовать что-то вроде почти канонического labels.js. Код действительно старенький, будучи автором в 2002 году (я думаю), но концепция звучит, и с тех пор ее базовая концепция была хорошо использована с modernframeworks.

+0

Nice. Не знал о свойстве .defaultValue. –

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