2016-01-15 162 views
2

我目前正在尋找在我的表單中有一個下拉列表。我有這下拉選擇默認值:在html下拉列表中選擇默認值

<p>Price Band:<select id='priceBand' style = 'width:150px' value = 'band1'> 
<option value="band7">Reduce by 30c</option> 
<option value="band6">Reduce by 25c</option> 
<option value="band5">Reduce by 20c</option> 
<option value="band4">Reduce by 15c</option> 
<option value="band3">Reduce by 10c</option> 
<option value="band2">Reduce by 5c</option> 
<option value="band1" selected="selected">default</option> 
</select></p> 

這工作正常,並選擇默認值作爲默認值。但是我也需要能夠做到 - 在提交表單之後,我希望它將最後選定的值保留爲默認值。這是用於添加不同價格帶的銷售的表格。銷售額由價格帶進入,因此默認值首先輸入,band2,band3等等。這樣做的最佳方式是什麼?我目前在頁面上使用JavaScript和PHP,如果這使它更容易?

Ajax代碼。我沒有收到下拉的價值,因爲這只是我正在實施的新事物。我只是想知道是否有可能已經選擇了默認值時,加載窗體,然後再在選擇不同的值,以保持該值作爲新的默認:

$('#divItemisedSaleAdd').dialog({'autoOpen': false, 'modal' : true, 'buttons' : 
    [ { text: "Ok", click: function() { 
     var url = '<?php echo Navigation::gUrl('/users/admin/stocktake_details_sales.php', array('stocktake_id' => $stocktake_id, 'action' => 'add_itemised_sale'));?>'; 

     var productCode = $('#ProductCode').val(); 
     var qty = $('#Quantity').val(); 

     var dialog = this; 

     $.ajax({ 
      url: url, 
      dataType: 'json', 
      data: {'productCode' : productCode, 'qty' : qty}, 
      type: 'post', 
      timeout: 5000, 
      success: function(json) { 
       if (json.status == 'S'){ 
        alert('Sale added'); 
       } 
       else if (json.status == 'E') 
        alert('No product with given PLU was found! Please check!'); 
        // loadDepartments(); 
        $(dialog).dialog("close"); 

      }, 
      error: function() {} 

     });  


      } } ] }); 
+0

表單是否提交給使用php或ajax的進程頁面? –

+0

它提交與ajax – ArtleMaks

+1

http://stackoverflow.com/questions/18633427/get-the-value-of-dropdown-select-options-using-ajax –

回答

1

您可以使用localStorage爲此目的:

$('#divItemisedSaleAdd').dialog({'autoOpen': false, 'modal' : true, 'buttons' : 
    [ { text: "Ok", click: function() { 
     var url = '<?php echo Navigation::gUrl('/users/admin/stocktake_details_sales.php', array('stocktake_id' => $stocktake_id, 'action' => 'add_itemised_sale'));?>'; 

     var productCode = $('#ProductCode').val(), 
      qty = $('#Quantity').val(), 
      dialog = this; 

     // save current selected value in storage 
     localStorage.setItem("default_option", productCode); 

     $.ajax({ 
      url: url, 
      dataType: 'json', 
      data: {'productCode' : productCode, 'qty' : qty}, 
      type: 'post', 
      timeout: 5000, 
      success: function(json) { 
       if (json.status == 'S'){ 
        alert('Sale added'); 
       } 
       else if (json.status == 'E') 
        alert('No product with given PLU was found! Please check!'); 
        // loadDepartments(); 
        $(dialog).dialog("close"); 

      }, 
      error: function() {} 

     });  


      } } ] }); 

// after page reload 
if (localStorage.getItem("default_option")) { 
    $('#ProductCode').val(localStorage.getItem("default_option")); 
} 
+1

您能爲我解釋localStorage嗎?我不知道這種方式是否可行。您的評論顯示「重新加載頁面後」,但頁面並未真正重新加載。我想我已經回答了我的問題。由於頁面沒有重新加載,最後選擇的值仍然保持選中,直到我刷新頁面。愚蠢的我! – ArtleMaks

0

這可能做到這一點 - 無論是selected = "selected"或者只是selected取決於你是否會使用XHTML或沒有。它要求將該值設置爲一個簡單的整數,但這樣可以簡化清理工作,只需使用您的查詢中使用的intval()即可,並且可以控制選定的選項。這個版本認爲頁面提交顯然現在不是這樣,因爲它全部由Ajax完成,但希望對某人有用。

if(!isset($priceBand_value)) $priceBand_value = array(); 
    $priceBand_value = ''; // reset it if already used 
    // set default 'selected = "selected"'; or just 'selected'; 
    <?php if(!isset($_POST['priceBand']) $priceBand_value[1] = 'selected = "selected"'; ?> 
    <?php $priceBand_value[intval($_POST['priceBand'])] = 'selected = "selected"'; ?> 

    <p>Price Band:<select id='priceBand' style = 'width:150px'> 
    <option value="7" <?php echo $priceBand_value[7] ?>>Reduce by 30c</option> 
    <option value="6" <?php echo $priceBand_value[6] ?>>Reduce by 25c</option> 
    <option value="5" <?php echo $priceBand_value[5] ?>>Reduce by 20c</option> 
    <option value="4" <?php echo $priceBand_value[4] ?>>Reduce by 15c</option> 
    <option value="3" <?php echo $priceBand_value[3] ?>>Reduce by 10c</option> 
    <option value="2" <?php echo $priceBand_value[2] ?>>Reduce by 5c</option> 
    <option value="1" <?php echo $priceBand_value[1] ?>>default</option> 
    </select></p> 

對於大多數情況,您可以從0開始而不是1開始,但這主要是爲了適應所給出的代碼框架。這將避免需要設置默認值,因爲頁面第一次渲染時intval($_POST['priceBand'])將爲0,但在這種情況下,可能難以跟蹤「波段」。