1

ドロップダウンの選択に応じて変化する動的ページを作成しようとしています。セットアップのために、2 つのドロップダウンがあります。これを説明する最も簡単な方法は、国と州のドロップダウンです。特定の状態が選択されたときに、別の div にその状態に関する情報が入力されるようにしたいと思います。これは単なる例ですが、私が探しているものはほとんどです。簡単な Javascript と配列を使用して 2 つのドロップダウンをセットアップし、そのように設定しました。

<script type="text/javascript">
var postState = '';
var postCountry = '';

var state = '\
US:AK:Alaska|\
US:AL:Alabama|\
US:AR:Arkansas|\
';

var country = '\
US:United States|\
';

function populateCountry(defaultCountry) {
  if ( postCountry != '' ) {
    defaultCountry = postCountry;
  }
  var countryLineArray = country.split('|');  // Split into lines
  var selObj = document.getElementById('countrySelect');
  selObj.options[0] = new Option('Select Country','');
  selObj.selectedIndex = 0;
  for (var loop = 0; loop < countryLineArray.length; loop++) {
    lineArray = countryLineArray[loop].split(':');
    countryCode  = TrimString(lineArray[0]);
    countryName  = TrimString(lineArray[1]);
    if ( countryCode != '' ) {
      selObj.options[loop + 1] = new Option(countryName, countryCode);
    }
    if ( defaultCountry == countryCode ) {
      selObj.selectedIndex = loop + 1;
    }
  }
}

function populateState() {
  var selObj = document.getElementById('stateSelect');
  var foundState = false;
  // Empty options just in case new drop down is shorter
  if ( selObj.type == 'select-one' ) {
    for (var i = 0; i < selObj.options.length; i++) {
      selObj.options[i] = null;
    }
    selObj.options[0] = new Option('Select State','');
    selObj.selectedIndex = 0;
  }
  // Populate the drop down with states from the selected country
  var stateLineArray = state.split("|");  // Split into lines
  var optionCntr = 1;
  for (var loop = 0; loop < stateLineArray.length; loop++) {

    lineArray = stateLineArray[loop].split(":");
    countryCode  = TrimString(lineArray[0]);
    stateCode    = TrimString(lineArray[1]);
    stateName    = TrimString(lineArray[2]);
  if (document.getElementById('countrySelect').value == countryCode && countryCode != '' ) {
    // If it's a input element, change it to a select
      if ( selObj.type == 'text' ) {
        parentObj = document.getElementById('stateSelect').parentNode;
        parentObj.removeChild(selObj);
        var inputSel = document.createElement("SELECT");
        inputSel.setAttribute("name","state");
        inputSel.setAttribute("id","stateSelect");
        parentObj.appendChild(inputSel) ;
        selObj = document.getElementById('stateSelect');
        selObj.options[0] = new Option('Select State','');
        selObj.selectedIndex = 0;
      }
      if ( stateCode != '' ) {
        selObj.options[optionCntr] = new Option(stateName, stateCode);
      }
      // See if it's selected from a previous post
      if ( stateCode == postState && countryCode == postCountry ) {
        selObj.selectedIndex = optionCntr;
      }
      foundState = true;
      optionCntr++
    }
  }
function initCountry(country) {
  populateCountry(country);
  populateState();
}
</script>

私はJavascriptが得意ではないので、それは私が持っている限りです。ドロップダウンにデータを入力する簡単な方法があれば、私はそれで十分です。私はPHPの経験が豊富なので、コンテンツを表示するための何らかのクロスオーバーを望んでいました。

繰り返しますが、ドロップダウンは 2 つあります。1 でオプションを選択すると、2 でさまざまなオプションが使用可能になります。2 でオプションをクリックすると、その下の DIV に情報が表示されます。ユーザーは、オプションの選択と情報の表示を続行できる必要があります。

4

1 に答える 1

0

これを AJAX で行うことを検討する必要があります。実際には、データ セットが大きすぎて、すべてをローカルに保存できません。jQueryを使用して応答を記述します。説明のために少し単純化しすぎます。まず、状態が変化したときの関数が必要です (1 つのロールアップ関数を記述してすべてを実行することもできますが、まだそのレベルには達していないと思います)。

function changeDrop1() {
    var country = $('#mydrop1').val();
    $.getJSON('/your/ajax/file/?country=' + country, function(data) {
         $('#mydrop2').empty();
         $.each( data, function( key, val ) {
            var opt = $('<option/>', {'value':key }).text(val);
            $('#mydrop2').append(opt);
         });
    });
}

私の仮定は、あなたのAJAXが渡された国をポーリングし、このようなJSONオブジェクトを返すことです

{ "AL":"Alabama", "AK":"Alaska" }

スクリプトが国を通過すると、この形式で州が返され、それぞれを使用して州を反復処理し、ドロップダウン 2 にデータを入力できます。最後の部分は、それをトリガーする方法です。あなたのページで、あなたは追加します

$(document).ready(function() {
     $('#mydrop1').change( changeDrop1(); });
});

ここで、ドロップダウン値が変更されると、AJAX をトリガーしてドロップダウン 2 に入力します。これがすべて理にかなっていることを願っています。ドロップダウン 2 のチェックと div の設定に同じ手法を再利用できます。

于 2013-10-17T02:39:18.447 に答える