Показать сообщение отдельно
  #1 (permalink)  
Старый 24.09.2011, 09:13
Новичок на форуме
Отправить личное сообщение для AdeL1ne Посмотреть профиль Найти все сообщения от AdeL1ne
 
Регистрация: 24.09.2011
Сообщений: 2

события focus и blur
Здравствуйте! Помогите разобраться со скриптом..
Для начала сам код:
<span class="error_message"></span><br id="before_pass" />
<input id="pass" type="text" size="30" maxlength="30" name="pass" value="Пароль" />

Задача следующая: При фокусе на input'e $('#pass') поменять его тип на password и убрать значение value='Пароль'.
А при отмене фокусу (blur), если пароль не был введен, вернуть обратно type='text' и value='Пароль', иначе оставить все как есть.

Т.к. методом attr просто взять и поменять type с text на password оказалось не возможным, вариантов решения этой задачи осталось два:
либо создавать два input'a, либо работать с одним, удаляя его и добавляя уже с нужным типом. Первый вариант у меня получился, но хотелось бы реализовать алгоритм с одним input'ом.
Вот код, который я написал, он ессно работает не правильно:

$('#pass').val('Пароль');
var pass_true = '<input id="pass" type="password" size="30" maxlength="30" name="pass" value="" />';
var pass_fake = '<input id="pass" type="text" size="30" maxlength="30" name="pass" value="Пароль" />';

$('#before_pass + input').focus(function() 
{
    type = $(this).attr('type');
    if ($(this).val() == 'Пароль' && type == 'text')
    {
        $(this).remove();
        $('#before_pass').after(pass_true);
        /*$('#before_pass + input').focus();*/
    }
    else
    {
        return false;
    }
       	    
});

$('#before_pass + input').blur(function()
{ 
    type = $(this).attr('type');
    if ($(this).val() == '' && type == 'password')
    {
        $(this).remove();
        $('#before_pass').after(pass_fake);
    }
    else
    {
        return false;
    }  
});

Ну вот собсно придумать как это должно работать с одним инпутом у меня пока не получилось...
Ответить с цитированием