Проверьте, является ли innerHTML пустым - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть вызов ajax для моего события onkeyup, которое проверяет, находится ли данный адрес электронной почты в базе данных или нет. Моя проблема в том, что я не могу найти правильное решение, чтобы проверить, является ли ответ ajax ПУСТОЙ, и если да, мне нужно отключить кнопку.

Это вывод ajax.php:

$sql = "// the query";

$result = mysql_query($sql);
$num_rows = mysql_num_rows($result);

if($num_rows>0){
    echo "<i>Yepp, this is taken</i>";
  }

Это код JavaScript для вызова ajax И функция отключения и включения кнопки (вызов ajax, только если адрес электронной почты действителен):

function checkEmail(str){

    email = document.getElementById('user-email').value
    AtPos = email.indexOf("@")
    StopPos = email.lastIndexOf(".")

    if (AtPos == -1 || StopPos == -1) {
         document.getElementById('button-reg').disabled=true;    
    }else{
        if (str=="")
          {
          document.getElementById("txtHint").innerHTML="";
          return;
          }
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status == 200){
                document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
            }
          }
        xmlhttp.open("GET","ajax.php?q="+str,true);
        xmlhttp.send();
    }
    var htmlstring = document.getElementById("txtHint").innerHTML;

    htmlstring = htmlstring.replace(/^\s+/,'');

    if(htmlstring==""){
        document.getElementById('button-reg').disabled=false;
    }else{
        document.getElementById('button-reg').disabled=true;
    }
}

Как видите, я пробовал с удалением пробелов, но не повезло ... после пустого отклика кнопка все еще не отключена ...

Может кто-нибудь помочь мне здесь? :) Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Используйте эту функцию ..

function checkEmail(str){

    email = document.getElementById('user-email').value
    AtPos = email.indexOf("@")
    StopPos = email.lastIndexOf(".")

    if (AtPos == -1 || StopPos == -1) {
         document.getElementById('button-reg').disabled=true;    
    }else{
        if (str=="")
          {
          document.getElementById("txtHint").innerHTML="";
          return;
          }
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status == 200){
                document.getElementById("txtHint").innerHTML=xmlhttp.responseText;

                htmlstring = xmlhttp.responseText.replace(/^\s+/,'');
                if(htmlstring==""){
                    document.getElementById('button-reg').disabled=false;
                }else{
                    document.getElementById('button-reg').disabled=true;
                }
            }
          }
        xmlhttp.open("GET","ajax.php?q="+str,true);
        xmlhttp.send();
    }
}

Надеюсь, это поможет ..

1 голос
/ 03 апреля 2012

Возможно, это:

var isEmpty = (xmlhttp.responseText + "").length==0;

Возможно, вы можете написать свою программу, чтобы она была более интересной.

$out = array("ok"=>true,"msg"=>"Not data found","html"=>"<h1>Not <i>data</i> found</h1>");
echo json_encode($out);

Затем на клиенте загрузите json как данные и выполните if (data ["ok"]) ... Таким образом, вы можете передать более одного параметра с сервера на клиент и разделить эти параметры. Сделайте так, чтобы клиентская часть могла легко выбирать, какую часть использовать, и правильно все закодировать, чтобы у вас не было проблем с utf-8. Кроме того, инспекторы, такие как Firebug, будут хорошо визуализировать параметры, если у вас есть расширение json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...