检查innerHTML是否为空

时间:2012-04-03 13:35:04

标签: php javascript ajax javascript-events

我的onkeyup事件上有一个ajax调用,用于检查给定的电子邮件地址是否在数据库中。我的问题是,我找不到合适的解决方案来检查ajax响应是否为EMPTY,如果是,我需要禁用按钮。

这是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>";
  }

这是ajax调用的JavaScript和按钮禁用和启用功能(仅当电子邮件地址有效时才调用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 个答案:

答案 0 :(得分:2)

使用此功能..

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 :(得分:1)

也许这就是:

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的问题。如果你有一些json扩展,像Firebug这样的检查员会使参数变得非常好。