aaadddminnn
@aaadddminnn
php it ubuntu debian

Почему не коректно выполняется условие?

Привет. Учу js. Не как не могу понять почему инпут блокируется всегда в не зависимости от того занят ник или нет
<form action="/registration/createUserPass" method="post">      
                        <input type="text" name="login"  OnKeyUp="checkLogin(this.value)" class="input"/>
                        <div class="button orange">
                <input type="submit" name="" value="Выбрать имя" onClick="return Formdata(this.form)">
            </div>
        </form>
                
<script type="text/javascript">
function Formdata(data){
/* если не заполнено поле Ваше имя, длина менее 3-x*/
if (data.login != null && data.login.value.length < 3 )
{
document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! Имя слишком короткое.</p></div></div>";
return false;
}

if (data.login != null && data.login.value.length > 25 )
{
document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! Имя слишком длинное.</p></div></div>";
return false;
}
return false;
}
 function getXmlHttp() {
    var xmlhttp;
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
      xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
  }
  function checkLogin(login) {
    var xmlhttp = getXmlHttp(); 
    xmlhttp.open('POST', '/api/dataValidation/check_login.php', true); 
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send("login=" + encodeURIComponent(login)); 
    xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4) { 
        if(xmlhttp.status == 200) { 
          if (xmlhttp.responseText) {
              //если логин занят то блокируем кнопку и выдаём уведомление
                document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! имя занято</p></div></div>";
                document.getElementById('submit').disabled = parseInt(req.responseText) < 1 ? true : false;
            }else{ 
                document.getElementById("check_login").innerHTML = "<div class='message yellow'><div><p>Имя свободно</p></div></div>";
            }
        }
      }
    };
  }
</script>

Как поправить код что бы инпут не был в блоке всегда?
  • Вопрос задан
  • 201 просмотр
Решения вопроса 2
chlp
@chlp
фулстек
Похоже, что проблема в логике в этой части:
if (xmlhttp.responseText) {
              //если логин занят то блокируем кнопку и выдаём уведомление
                document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! имя занято</p></div></div>";
                document.getElementById('submit').disabled = parseInt(req.responseText) < 1 ? true : false;
            }else{ 
                document.getElementById("check_login").innerHTML = "<div class='message yellow'><div><p>Имя свободно</p></div></div>";
            }

Вы говорите, что имя занято, но еще решаете блокировать или разблокировать, а при выдаче "имя свободно", вы инпут так и не разблокируете.
Ответ написан
aaadddminnn
@aaadddminnn Автор вопроса
php it ubuntu debian
Убрал я вот этот кусочек кода и всё заработало. Но как быть тогда с валидацией?
function Formdata(data){

if (data.login != null && data.login.value.length < 3 )
{
document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! Имя слишком короткое.</p></div></div>";
return false;
}

if (data.login != null && data.login.value.length > 25 )
{
document.getElementById("check_login").innerHTML = "<div class='message padd_top_10 padd_bot_10 red'><div><p>ВНИМАНИЕ! Имя слишком длинное.</p></div></div>";
return false;
}
return false;
}

Без этого кода сабмит не блочится. и document.getElementById('submit').disabled = parseInt(req.responseText) < 1 ? true : false; до одного места
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы