Похоже, вы не допускаете, чтобы поля были пустыми, но что если пользователь поместит в поле один или несколько пробелов? Если вы хотите предотвратить это, вам нужно обрезать его. (См. Стивен Левитанс блог о различных способах обрезки).
function trim(str) {
return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}
Если вы действительно хотите использовать заглавные буквы, вы можете использовать:
function capitalize(str) {
return str.substr(0, 1).toUpperCase() + str.substr(1).toLowerCase();
}
Очистив событие onfocus, вы создали проблему, которой не должно было быть. Более простое решение - просто добавить оператор if к событию onfocus, поэтому он очищается только в том случае, если это значение по умолчанию (но я предпочитаю выбирать его, как предложил tvanfosson).
Я предполагаю, что вы в своих элементах ввода установили свойство value так, чтобы значение отображалось в элементах ввода при отображении страницы, даже если javascript отключен. Это значение доступно как element.defaultValue. Бонусы при использовании этого подхода:
- Значение по умолчанию определяется только в одном месте.
- Вам больше не нужно использовать заглавные буквы в своих обработчиках.
- Значение по умолчанию может иметь любой регистр (например, "John Y McMain")
- Значение по умолчанию больше не должно совпадать с именем элемента.
.
function clear_default(element) {
if (trim(element.value) == element.defaultValue ) { element.value = ""; }
}
function restore_default(element) {
if (!trim(element.value).length) { element.value = element.defaultValue;}
}