2012-02-17 2 views
0

Таким образом, я унаследовал эту форму с полями заполненной формы, такими как «Имя», «Телефон» или «Почтовый индекс», чтобы пользователи знали, что делать с полями. Но если кто-то просто нажимает кнопку, форма передает «Имя», «Телефон» или «Почтовый индекс» в базу данных. OnFocus в нем, похоже, не работает. Есть идеи?Заполненные поля формы

<input type="" maxlength="25" name="firstname" tabindex="6" id="firstname" class="textfield" value="First Name" onFocus="if (this.value == 'First Name') {this.value = '';}"> 

Спасибо заранее, -Bob

+1

Попробуйте использовать placeholder = «Имя», если вы используете браузер с поддержкой HTML5. –

+1

Чтобы получить максимальную отдачу от переполнения стека, вам нужно приложить некоторые усилия. Ваши вопросы должны дать достаточно контекста и подробностей, чтобы люди (например, я!), Которые хотели бы помочь сделать это. В этом случае, пожалуйста: покажите фрагмент формы HTML, покажите любой Javascript, который будет задействован, и детализируйте точное ожидаемое/желаемое поведение. Благодаря! –

+0

bobbiloo

ответ

0

Как и другие, используйте атрибут placeholder, чтобы установить «метку» поля. Кроме того, если вы уже используете jQuery для упрощения вашего Javascript, вы можете использовать плагин как this one, который добавит поддержку атрибута placeholder для браузеров, не совместимых с HTML.

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

+0

Кроме того, если доступность является проблемой, было бы неплохо, если бы вы также включили элементы '

1

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

Name: [________] 
=== NOT === 
[Name____] 

Как форма на бумаге.

Если у вас должен быть текст в поле, используйте атрибут placeholder. Но имейте в виду, что поддерживают только новейшие браузеры.

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

+0

Что в этом плохого? Бывают ситуации, когда предпочтительнее других. –

+0

Как только пользователь заменил значение по умолчанию значением, у них больше нет метки, указывающей на то, для чего это поле. – RobG

0

В дополнении к тому, что сказал Kolnik, вы можете сделать простую проверку текстовых входов, которые имеют значение по умолчанию, используя что-то вроде:

if (input.value == input.defaultValue || /^\s*$/.test(input.value)) { 
    // field value isn't valid 
} 

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

+0

Я полагаю, вы имеете в виду '/^\ s * $ /. Test (input.value)' – zzzzBov

+0

Ах да, спасибо. Вряд ли значение будет RegExp. :-) – RobG

+0

Спасибо всем за подсказку «placeholder». Это то, что доктор заказал. Только последнее: что я могу сделать с IE 7 или 8? (Боюсь, я знаю ответ ;-) – bobbiloo

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