У меня есть форма регистрации на моем веб-сайте, к которой с помощью jquery я добавляю значения по умолчанию, а onFocus / blur значения по умолчанию скрывают и показывают соответственно.
Моя проблема в том, что когда форма отправляется и возвращает ошибки при проверке php, я не могу показать опубликованные значения в полях. Javascript, кажется, записывает поверх опубликованных данных, которые отображаются с использованием php во входном значении.
Когда я смотрю на источник страницы после публикации своей формы, я вижу, что в значении входных данных у меня действительно есть опубликованное значение, значение, которое я хочу показать. Пример:
<input type="text" name="first_name" value="Harry" />
PHP выполнил свою работу по отражению опубликованных данных в значении моего ввода. Затем Javascript изменяет его так, чтобы вместо того, чтобы пользователь увидел свое имя (в данном примере Гарри), он снова увидел jquery по умолчанию, добавленный «Имя».
Это происходит, хотя у меня есть значение на входе.
Как я могу изменить свой Javascript, чтобы записать значение моего ввода, а не записывать поверх него?
Это код на данный момент:
$(document).ready(function() {
$('input[name=first_name]').val('First name');
$('input[name=last_name]').val('Last name');
$('input[name=email_address]').val('Email address');
// cache references to the input elements into variables
var passwordField = $('input[name=password]');
var emailField = $('input[name=email_address]');
var firstnameField = $('input[name=first_name]');
var lastnameField = $('input[name=last_name]');
// get the default value for the fields
var emailFieldDefault = emailField.val();
var firstnameFieldDefault = firstnameField.val();
var lastnameFieldDefault = lastnameField.val();
// add a password placeholder field to the html
passwordField.after('<input id="passwordPlaceholder" type="text" value="Password" autocomplete="off" />');
var passwordPlaceholder = $('#passwordPlaceholder');
// show the placeholder with the prompt text and hide the actual password field
passwordPlaceholder.show();
passwordField.hide();
// when focus is placed on the placeholder hide the placeholder and show the actual password field
passwordPlaceholder.focus(function() {
passwordPlaceholder.hide();
passwordField.show();
passwordField.focus();
});
// and vice versa: hide the actual password field if no password has yet been entered
passwordField.blur(function() {
if(passwordField.val() == '') {
passwordPlaceholder.show();
passwordField.hide();
}
});
// when focus goes to and moves away from the fields, reset it to blank or restore the default depending if a value is entered
emailField.focus(function() {
if(emailField.val() == emailFieldDefault) {
emailField.val('');
}
});
emailField.blur(function() {
if(emailField.val() == '') {
emailField.val(emailFieldDefault);
}
});
firstnameField.focus(function() {
if(firstnameField.val() == firstnameFieldDefault) {
firstnameField.val('');
}
});
firstnameField.blur(function() {
if(firstnameField.val() == '') {
firstnameField.val(firstnameFieldDefault);
}
});
lastnameField.focus(function() {
if(lastnameField.val() == lastnameFieldDefault) {
lastnameField.val('');
}
});
lastnameField.blur(function() {
if(lastnameField.val() == '') {
lastnameField.val(lastnameFieldDefault);
}
});
});