Если вы устанавливаете значение ввода, чтобы скрыть то, что написал пользователь, проще изменить тип ввода между вводом текста и вводом пароля.
<input style="color: #ccc" type="password" name="country"
onFocus="this.type='text'; this.style.color=''"
onblur="this.type='password'" />
Если вы хотите, чтобы ввод отображал значение по умолчанию, когда он не имеет фокуса, но отправлял значение, введенное пользователем в последний раз, вы можете использовать скрытый ввод. Поскольку JS может быть отключен / недоступен, вам нужно либо изменить имена входов в JS, либо решить, какой вход получить значение со стороны сервера.
<input type="hidden" name="country_actual" />
<input style="color: #ccc" type="password"
onFocus="this.value='';this.style.color='black';"
onblur="this.form.elements.counter.value=this.value; this.value='something'" />
<script type="text/javascript">
document.forms[document.forms.length-1].elements.country.name = '';
document.forms[document.forms.length-1].elements.country_actual.name = 'country';
</script>
Если вы хотите сохранить введенное пользователем значение только тогда, когда фокус переключается с ввода на кнопку отправки, это трудно или невозможно. Когда фокус переключается, событие размытия может срабатывать до события фокусировки (в зависимости от браузера), поэтому вы не можете использовать его для проверки вновь сфокусированного элемента, что в противном случае вы могли бы сделать с document.activeElement
. Кроме того, в браузерах на основе webkit кнопки (элементы <input>
или <button>
), кажется, не получают фокус.