0

私は2つのSELECTSを持っています。どちらも mysql クエリを介して入力されます。2 番目は、ユーザーが最初の から選択した後に入力する必要があります<SELECT>。これを達成するための最善の方法について、誰かが何らかの方向性を提供できますか?

補足として、値を別のページに送信して2番目のページ<SELECT>をポップアップさせることで、AJAXでこれを達成できましたが、オプションが選択された後にポップアップしたくないということです。移入したい。おそらく、JSを変更できますか?

function showBus(selection_id)
{
    if (selection_id=="")
    {
        document.getElementById("Bus_Opt").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("Bus_Opt").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("GET","/includes/adminPages/selectBusiness.inc.php?selection_id="+selection_id,true);
xmlhttp.send();
 }

こんにちはコミュニティ、

ご回答ありがとうございます。簡単に説明すると、基本的には、最初の選択の値が "" であっても、両方の選択ボックスを同時に表示したかっただけです。これを達成するために、この機能を追加しました。

window.onload = function() {
document.Search.group.onchange()
};

document.your_form_name.your_select_id_name.onchange();

4

3 に答える 3

1

2番目の選択にこれらの新しいオプションを持たせたいと仮定します:

  • <option value='1'>First Value</option>
  • <option value='2'>Second Value</option>

そして、あなたのajaxの戻り値が次のようになると仮定します:1@First Value|2@Second Value

コードdocument.getElementById("Bus_Opt").innerHTML=xmlhttp.responseText;を変更する

var a = xmlhttp.responseText;
var options = a.split('|');
secondSelect = document.getElementById("id_of_second_select");
secondSelect.length = 0; // delete all options from second select
for (i=0; i < option.length; i++) {
    option = options[i].split('@');
    optionValue = option[0];
    optionText = option[1];
    secondSelect.options[secondSelect.options.length] = new Option(optionValue, optionText); // Add new option to second select
}
于 2013-07-23T12:19:33.253 に答える
0

手順は次のようになります: スクリプトで、json-encode()関数 selectBusiness.inc.phpを介してブラウザに送信する値をエンコードします。

if (isset($_GET['selection_id'])) {
  // here read the values from your database according to $_GET['selection_id'] and put them to array
  $arr = array('option1' => 'value1', 'option2' => 'value2', 'option3' => 'value3');
  $str = json_encode($arr); // convert the array to string
  echo $str; // {"option1":"value1","option2":"value2","option3":"value3"}
  exit;
}

今javascriptで置き換えます

document.getElementById("Bus_Opt").innerHTML=xmlhttp.responseText;

次のコードで - JSON.parse()関数を使用しています:

var obj = JSON.parse(xmlhttp.responseText); // convert the string back to object
console.log(obj); // 
var select2 = document.getElementById("select2");
select2.length = 0;
for (var prop in obj) {
    select2.options[select2.options.length] = new Option(prop, obj[prop]); // thanks to Erdo ;)
}
于 2013-07-23T13:52:49.977 に答える
0

ここの「複数選択」の例に示されていることを達成しようとしていますか?:

http://simpleajax.googlecode.com/svn/docs/demos/simple_demos.html

SimpleAjaxというライブラリを使用します。

于 2013-07-23T12:35:54.387 に答える