2012-04-03 18 views
0

私のonkeyupイベントにajaxコールがあり、指定された電子メールアドレスがデータベースにあるかどうかを確認します。私の問題は、ajaxレスポンスがEMPTYであるかどうかをチェックする正しい解決策が見つからず、はいの場合はボタンを無効にする必要があるということです。innerHTMLが空であることを確認してください

これは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; 
    } 
} 

あなたは私が空白eleminationてみましたが、運が...空repsonse後ボタンがまだ無効になっていないではありません見ることができるように...

は、誰かが私をここに助けることはできますか? :) どうもありがとう!

+0

あなたがもし後に "復帰" を追加しようとしなかった(AtPos == -1 || StopPos == -1)?現在、関数の最後の11行は、関数を呼び出すたびに呼び出されます。 –

答えて

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

・ホープ、このことができます。..

+0

私は置き換えられましたがまだ動作していません... :("document.getElementById( 'button-reg')。disabled = false;" JSは実行されません... – VORiAND

+0

"htmlstring = xmlhttp.responseText; .. – VORiAND

+0

@voriand - 私の編集された回答を参照してください –

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をロードし、(データは[「OK」])...あなたは、サーバからクライアントに複数のパラメータを渡す、とすることができます。この方法では、持っている場合の対処しますこれらのパラメータは分離されます。クライアントパートが使用するパートを簡単に選択できるようにし、utf-8に問題がないようにすべてを適切にエンコードします。 Firebugのようなプラスのインスペクタは、jsonの拡張子があれば、パラメータを素早くレンダリングします。

関連する問題