Я пытаюсь сделать более простой и четкий инструмент для восстановления форм на сайте и не могу понять, почему это не работает.
$(document).ready(function() { $('.form-text').focus(function(keeper) { var keeper = $(this).attr('value'); if($(this).val() == keeper) { $(this).val(''); } return false; }); $('.form-text').blur(function(keeper) { if($(this).val() == '') { keeper; } return false; }); });
Есть мысли?
Просто сделайте keeper во внешней области, не нужно быть глобальным.И var keeper = $(this).attr('value'); if($(this).val() == keeper) всегда будет истинным, так что в этом нет необходимости.
keeper
var keeper = $(this).attr('value'); if($(this).val() == keeper)
$(document).ready(function() { var keeper; $('.form-text').focus(function() { keeper = $(this).val(); $(this).val(''); return false; }); $('.form-text').blur(function() { if($(this).val() == '') { $(this).val(keeper); } return false; }); });
вы можете сделать var keeper глобальным.
var keeper
вы можете использовать это
var keeper = ""; $(document).ready(function() { $('.form-text').focus(function(keeper) { keeper = $(this).attr('value'); if($(this).val() == keeper) { $(this).val(''); } return false; }); $('.form-text').blur(function(keeper) { if($(this).val() == '') { keeper; } return false; }); });
jQuery предоставляет метод для хранения данных для вас :
Набор:
$("#selector").data('name', 'value');
Получить: var path = $(this).data('name'); // Get the stored resul t
var path = $(this).data('name'); // Get the stored resul
Две вещи: не $ (this) .attr ('value') и $ (this (.val (), ссылающиеся на одно и то же значение, или я что-то упустил? *
).Событие "blur", разве вы не используете "keeper", как если бы это был метод, а не переменная?