在 html 下拉列表中选择默认值


Selecting default value in html dropdown list

我目前正在寻找我的表单中的下拉列表。我有这个下拉菜单,它选择默认值:

<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>

这工作正常并选择默认值作为默认值。但是我还需要能够做的 - 提交表单后,我希望它将最后一个选定的值保留为默认值。它是一种用于添加具有不同价格带的销售的形式。销售额按价格带输入,因此首先输入默认值,波段 2、波段 3 等。最好的方法是什么?我目前正在页面上使用 javascript 和 php,如果这让它更容易?

阿贾克斯代码。我没有包括获取下拉列表的值,因为这只是我正在实现的一个新事物。我只想知道是否可以在首先加载表单时选择默认值,然后在选择其他值时选择默认值,以将该值保留为新的默认值:

 $('#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() {}
         });    

          } } ] });

您可以使用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")); 
}
这可能会

做到这一点 - 要么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 的需要,但在这种情况下,跟踪"波段"可能更难。