[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавление css
l@pteff
Здравствуйте, в форме есть поле для ввода логина и рядом с ним находится <span> для вывода сообщения о том, не занят ли введенный логин:


<label> Логин </label>
<input
name="login" id="login">
<span
id="mes_login" style="display:none"> </span>


Проверка логина происходит на серверной стороне в файле 'login.php'. Если логин не занят, в <span id="mes_login"> должна зелёным цветом появиться надпись "Логин свободен" при снятии курсора с поля, или красным цветом сообщение об ошибке-вслучае неудачной авторизации.


$(function(){
$('#login').blur(function(){
var znach_login=$('#login').val();
var answer=$('#mes_login').html();
$.post('../php/login.php', {login:znach_login}, function(data){
if (data.length>0){
if (answer=='Логин свободен') {
$('#mes_login').css('color', 'green');
}

else {$('#mes_login').css('color', 'red');}

$('#mes_login').html(data).fadeIn();
}
}
)
});


Почему-то замена цвета срабатывает со второго раза: вбили правильный логин-убрали курсор с поля-"Логин свободен" выводится красным, снова поставили курсор в это же поле-убрали- надпись становится зелёной как и нужно. Подскажите, пожал. как можно подправить код?



Спустя 33 минуты, 13 секунд (15.03.2011 - 16:57) nugle написал(а):
var answer=$('#mes_login').html();
вот здесь нужно так
var answer=$('#mes_login').val();

Спустя 7 минут, 24 секунды (15.03.2011 - 17:05) l@pteff написал(а):
не, так это условие не срабатывает:


if (answer=='Логин свободен') {
$('#mes_login').css('color', 'green');
}


при .val() из <span> не извлекается значение, (все сообщения выводятся красным) подходит только .html() ;)

Спустя 1 минута, 45 секунд (15.03.2011 - 17:06) ZSH написал(а):
Цитата
var answer=$('#mes_login').html();
вот здесь нужно так
var answer=$('#mes_login').val();

не нужно, разве в span есть value?

$('#mes_login').html(data).fadeIn();


эту строку поставь первой в function(data){}, а то получается что проверка происходит до занесения данных в <span id="mes_login">

Спустя 10 минут, 28 секунд (15.03.2011 - 17:17) l@pteff написал(а):
ZSH, это ты верно подметил. :) но итог тот же. Я даже сделал чуть более последовательно: занесение данных в спан-проверка-и лишь затем показ fadeIn():

if (data.length>0){
$('#mes_login').html(data);
if (answer=='Логин свободен') {
$('#mes_login').css('color', 'green');
}
else {$('#mes_login').css('color', 'red');}
$('#mes_login').fadeIn();
}
}
)
});


но увы, цвет с первого раза так и не меняется... :(

Спустя 2 минуты, 20 секунд (15.03.2011 - 17:19) ZSH написал(а):
а после занесения данных $('#mes_login').html(data);
переменная answer чему равняется biggrin.gif


P.S.
явно не тому что пришло с сервера

Спустя 6 минут, 20 секунд (15.03.2011 - 17:25) l@pteff написал(а):
Цитата

а после занесения данных $('#mes_login').html(data);
переменная answer чему равняется biggrin.gif



var answer=$('#mes_login').html();

Спустя 2 минуты, 36 секунд (15.03.2011 - 17:28) ZSH написал(а):
ну правильно там пустота, потому что var answer=$('#mes_login').html(); происходит до внесения в span ответа от сервера, и if (answer=='Логин свободен') не выполнится

Спустя 12 минут, 7 секунд (15.03.2011 - 17:40) l@pteff написал(а):
ZSH, точно

var answer=$('#mes_login').html();

прописал после

$('#mes_login').html(data);

и теперь цвета сразу соответствуют сообщениям! Огромное спасибо +1

Спустя 2 минуты, 30 секунд (15.03.2011 - 17:43) ZSH написал(а):
if (data=='Логин свободен')

и не надо лишние манипуляции
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.