0

オートコンプリート (提案) フィールドを作成したので、入力すると、フィールドの下にテキストとして提案が表示されます。JavaScript を再構築し、テキストをクリック可能にしました。そのため、モーダルをクリックすると表示されます (別の小さなダイアログ)。

私が望むのは、提案フィールドからモーダルにテキストを表示することだけです。$.post("thesuggtest.php") メソッドを使用しているのは、選択した提案テキスト (クリックされる) を取得し、php と mysql を介してモーダルでそれに関する情報を取得する必要があるためです。

これは私がそのために使用している主な JavaScript ですが、いくつかの問題があります。

function showHint(str)
        {
        if (str.length==0)
          { 
          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)
            {
            comeon = document.getElementById('comeon');
            document.getElementById('predlozi').innerHTML='<a data-toggle="modal" data-backdrop="static" href="#myMail" class="label ttip_b" title="New messages">' + xmlhttp.responseText + '</a><div class="modal hide fade" id="myMail"><div class="modal-header"><button class="close" data-dismiss="modal">×</button><h3>New messages</h3></div><div class="modal-body"><div id="comeon"></div>' + $.post("thesuggtest.php", { 'suggestion' : xmlhttp.responseText },function(data){comeon.innerHTML(data);console.log('Error:', data);}); + '</div></div>';

            }
          }
        xmlhttp.open("GET","gethint.php?q="+str,true);
        xmlhttp.send();
        }

gethint.php ファイルを使用して、フィールドからの入力値に一致する提案を取得しています (配列から取得します)。問題は、モーダル (ダイアログ) でテキストをエコーできないことです。

document.write(data) を配置すると、値がエコーされますが、空白のページになります。comeon.innerHTML(data) を配置すると、Uncaught TypeError: Cannot call method 'innerHTML' of null. が発生します。このタイプのエラーは要素 comeon を見つけることができず、null を返すためであることはわかっています。また、エコーされたテキストがあるべきモーダルで [object Object] を取得します。

何か助けはありますか?ありがとう。

4

1 に答える 1

0

私が気付くことができるいくつかの問題があります。

comeon = document.getElementById('comeon');

comeon div も使用しませんが、作成する前に取得しようとしています。この行のすぐ下に「comeon」div を作成します。

$.post("thesuggtest.php", { 'suggestion' : xmlhttp.responseText },function(data){comeon.innerHTML(data);console.log('Error:', data);});

$.postも非同期リクエストであるため、リクエストしただけのテキストを返すことはありません。<a data-toggle="modal"おそらく他のイベントクリックを呼び出す必要があります。今度は「comeon」divを取得できます。

お役に立てれば。

于 2013-03-25T15:48:02.770 に答える