2011-09-01 105 views
0

我有5個下拉列表和一個提交按鈕。下拉列表中的每個內容都取決於上一個下拉列表的選擇值。我想確保即使點擊提交按鈕後,每個下拉列表的選定值仍保持選中狀態。任何人都可以幫助我嗎? 我看到一個網站,這是否但是在ASP.NET製成,我更喜歡TU使用PHP,JavaScript的如何使動態下拉列表中的選定值保持選定狀態?

<script type="text/javascript"> 
function changeSelect(lang, num, valueElement, nameSelect, nameSpan, dataSup, endId){ 
    var boxName = document.getElementById(nameSelect); 
    var hackIeSpan = document.getElementById(nameSpan); 
    var contentOption = $.ajax({ 
      url: "select.php", 
      global: false, 
      type: "POST", 
      data: { 
       lang : lang, 
       num : num, 
       select : valueElement, 
       dataSup : dataSup, 
       endId : endId 
      }, 
      dataType: "html", 
      async:false, 
      success: function(msg){ 
     } 
     } 
    ).responseText; 
    hackIeSpan.innerHTML = contentOption; 
} 

<form id="searchForm" method="post" action="search.php?search&page=0&lang=<?php echo $lang; ?>"> 
      <fieldset> 

       <select name="sort" onchange="changeSelect('<?php echo $lang; ?>', 1, this.value, 'type_list', 'hackIeType', 'null', 'null'); return true;"> 
        <option value="0"><?php echo trad('SEARCH_01', $lang); ?></option> 
        <option value="Rental"><?php echo trad('SEARCH_01a', $lang); ?></option> 
        <option value="Sale"><?php echo trad('SEARCH_01b', $lang); ?></option> 
       </select> 

       <span id="hackIeType"> 
        <select name="type_list"> 
         <option value="0"><?php echo trad('SEARCH_04', $lang); ?> ...</option> 
        </select> 
       </span> 

.......

<span id="hackIeSleeps"> 
        <select name="bedrooms"> 
         <option value="0"><?php echo trad('SEARCH_05', $lang); ?> ...</option> 
        </select> 
       </span> 
       <span id="spanEndId"> 
        <input id="endId" name="endId" type="hidden" value="" /> 
       </span> 

       <input id="submit_search_home" type="submit" value="<?php echo trad('BTNSEARCH', $lang); ?>" /> 

      </fieldset> 

回答

1

當您按下提交按鈕時會發生什麼?你最終回到同一頁面嗎?您只需根據$_POST中發送的值給出所需的選項selected="selected"屬性。

爲例(當您按下提交這可能不爲你工作,這取決於究竟發生了什麼):

<form id="searchForm" method="post" action="search.php?search&page=0&lang=<?php echo $lang; ?>"> 
    <fieldset> 
    <select name="sort" onchange="changeSelect('<?php echo $lang; ?>', 1, this.value, 'type_list', 'hackIeType', 'null', 'null'); return true;"> 
     <option value="0"<?php if ($_POST['name'] === '0') echo ' selected="selected"'; ?>><?php echo trad('SEARCH_01', $lang); ?></option> 
     <option value="Rental"<?php if ($_POST['name'] == 'Rental') echo ' selected="selected"'; ?>><?php echo trad('SEARCH_01a', $lang); ?></option> 
     <option value="Sale"<?php if ($_POST['name'] == 'Sale') echo ' selected="selected"'; ?>><?php echo trad('SEARCH_01b', $lang); ?></option> 
    </select> 
    <span id="hackIeType"> 
<?php 

    if ($_POST['name'] === '0') { 
    // The first select value is default, so we can just output a standard select 
    // to be populated by AJAX 

?> 
     <select name="type_list"> 
     <option value="0"><?php echo trad('SEARCH_04', $lang); ?> ...</option> 
     </select> 
<?php 

    } else { 
    // The first select is populated, so copy the logic that generates your second 
    // select from 'select.php' and put it here, then output it 
    } 

?> 
    </span> 

.......

<span id="hackIeSleeps"> 
<?php 

    if ($_POST['type_list'] === '0') { 
    // The second select value is default, so we can just output a standard select 
    // to be populated by AJAX 

?> 
     <select name="bedrooms"> 
     <option value="0"><?php echo trad('SEARCH_05', $lang); ?> ...</option> 
     </select> 
<?php 

    } else { 
    // The second select is populated, so copy the logic that generates your third 
    // select from 'select.php' and put it here, then output it 
    } 

?> 
    </span> 
    <span id="spanEndId"> 
     <input id="endId" name="endId" type="hidden" value="" /> 
    </span> 
    <input id="submit_search_home" type="submit" value="<?php echo trad('BTNSEARCH', $lang); ?>" /> 
    </fieldset> 
+0

當我按下提交按鈕,他把我發送到search.php?search&page = 0&lang = uk,但你可以看到在action =「search.php?search&page = 0&lang = <?php echo $ lang;?>」。 – Vladucu

+0

@ user921130是的,但是它與您發佈代碼的頁面相同嗎?換句話說,你發佈的HTML代碼是'search.php'的一部分還是其他頁面的一部分? – DaveRandom

+0

選擇=「選定」屬性只適用於第一部分,當您選擇租賃或銷售,第二個選擇沒有選擇,因爲您需要用鼠標選擇(onchange =「changeSelect(...)」)第一個選擇工作第二個。看到第一個JavaScript代碼,如果你需要我把一些代碼frome select.php – Vladucu

相關問題