2012-04-03 43 views
0

Ich habe einen Ajax-Aufruf bei meinem Onkeyup-Ereignis, das überprüft, ob die angegebene E-Mail-Adresse in der Datenbank ist oder nicht. Mein Problem ist, dass ich keine richtige Lösung finden kann, um zu überprüfen, ob die Ajax-Antwort LEER ist, und wenn ja, muss ich eine Schaltfläche deaktivieren.Überprüfen, ob innerHTML leer ist

Dies ist die ajax.php Ausgabe:

$sql = "// the query"; 

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

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

Dies ist das JavaScript für den Ajax-Aufruf und die Taste deaktivieren und Funktion (nur Ajax-Aufruf, wenn die E-Mail-Adresse gültig ist) aktivieren:

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; 
    } 
} 

Wie Sie kann ich mit Leerzeichen Eleminierung sehen versucht, aber kein Glück ... nach leer repsonse wird der Knopf noch nicht deaktiviert ...

kann mir jemand helfen hier? :) Danke vielmals!

+0

haben Sie versuchen, eine "Rückkehr" nach if (ATPOS == -1 || StopPos == -1) hinzufügen? Aktuell werden die letzten 11 Zeilen der Funktion bei jedem Aufruf der Funktion aufgerufen. –

Antwort

2

Mit dieser Funktion können ..

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(); 
    } 
} 

this helps ..

+0

ich ersetzt, aber immer noch nicht funktioniert ... :(die "document.getElementById ('button-reg'). Deaktiviert = falsch;" JS wird nicht ausgeführt ... – VORiAND

+0

mit "htmlstring = xmlhttp.responseText;" noch nichts. .. – VORiAND

+0

@voriand - siehe meine bearbeitete Antwort –

1

Vielleicht ist dies:

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

Vielleicht können Sie Ihr Programm interessanter sein schreiben.

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

Dann auf dem Client, laden Sie die json als Daten, und tun, wenn (data [ „ok“]) ... Auf diese Weise können mehr als einen Parameter vom Server an den Client übergeben können, und haben Diese Parameter sind getrennt. Machen Sie es so, dass der Client-Teil leicht wählen kann, welches Teil zu verwenden ist, und alles korrekt kodiert haben soll, damit Sie keine Probleme mit utf-8 haben. Plus-Inspektoren wie Firebug werden die Parameter nicelly rendern, wenn Sie eine json-Erweiterung haben.