<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();
вот здесь нужно так
var answer=$('#mes_login').val();
Спустя 7 минут, 24 секунды (15.03.2011 - 17:05) l@pteff написал(а):
не, так это условие не срабатывает:
при .val() из <span> не извлекается значение, (все сообщения выводятся красным) подходит только .html() ;)
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 чему равняется
P.S.
явно не тому что пришло с сервера
переменная answer чему равняется

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, точно
прописал после
и теперь цвета сразу соответствуют сообщениям! Огромное спасибо +1
var answer=$('#mes_login').html();
прописал после
$('#mes_login').html(data);
и теперь цвета сразу соответствуют сообщениям! Огромное спасибо +1
Спустя 2 минуты, 30 секунд (15.03.2011 - 17:43) ZSH написал(а):
if (data=='Логин свободен')
и не надо лишние манипуляции