Ajax Hidding Div проблема в IE - PullRequest
1 голос
/ 22 мая 2009

У меня есть страница JavaScript, которая проверяет электронную почту и имя пользователя, это прекрасно работает во всех браузерах, кроме Internet Explorer. Поле div, в котором отображаются ошибки, должно быть скрыто, если только не указана ошибка, например имя пользователя занято или неверный адрес электронной почты.

Если в электронном письме появляется ошибка, это отображается в теге div, но не работает для имени пользователя (во всех браузерах)

ниже мой код:

<script type="text/javascript">
     var usernameok;
    var emailok;

    function checksubmit()
    {
      if (usernameok && emailok) {
        document.getElementById("button").disabled = false;
      } else {
        document.getElementById("button").disabled = true;
      }
    }

    function username(username)
    {
               make_request();

      function stateck()
      {
        if (httpxml.readyState == 4) { 
          if (httpxml.responseText.indexOf("Username Ok") >= 0) {
                            usernameok = true;
          } else {
                          usernameok = false;
          }
          checkCanSubmit();           
        }
      }

      httpxml.onreadystatechange = stateck;
      user_url = "check_username.php?username=" + username.value;
      httpxml.open("GET", user_url, true);
      httpxml.send(null);
    }

    function email(email)
    {

      make_request();

      function stateck()
      {
        if (httpxml.readyState == 4) {
          if (httpxml.responseText.indexOf("Email Ok") >= 0) {
                          emailok = true;
          } else {
                          emailok = false;
          }
          checkCanSubmit();           
        }
      }

      httpxml.onreadystatechange = stateck;
      email_url = "check_email.php?email=" + email.value;
      httpxml.open("GET", email_url, true);
      httpxml.send(null);
    }
    </script>

Ответы [ 2 ]

0 голосов
/ 22 мая 2009

Вам нужно установить начальное состояние для отображения: нет? Я думаю, что IE может инициализировать div с высотой, отличной от 0, тогда как div может быть технически видимым в других браузерах, но слишком коротким, чтобы видеть.

Edit:

Хорошо, я думаю, что неправильно понял ваш вопрос. Ваша проблема не в том, чтобы скрыть div, а в отображении ошибок для имени пользователя.

Ничего очевидного не выпрыгивает из меня. Попробуйте пройти по коду с помощью VS или VWDE: http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/

0 голосов
/ 22 мая 2009

Я вижу, что ваша функция stateck () является функцией возврата из HTTP-запроса. Однако вы определяете это в другой функции. Не как анонимная функция, а как функция внутри другой функции.

Я вижу, что вы делаете сейчас ... хорошо, попробуйте это вместо:

httpxml.onreadystatechange = function()
{
  if (httpxml.readyState == 4) {
    if (httpxml.responseText.indexOf("Email Ok") >= 0) {
      document.getElementById("email").style.backgroundColor = "green";
      document.getElementById("email").style.color = "white";
      document.getElementById("email_div").style.display = 'none';
      emailok = true;
    } else {
      document.getElementById("email").style.backgroundColor = "red";
      document.getElementById("email_div").innerHTML=httpxml.responseText;
      emailok = false;
    }
    checkCanSubmit();           
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...