2016-01-15 113 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,但在这种情况下,可能难以跟踪“波段”。