В настоящее время я хочу иметь раскрывающийся список в моей форме. У меня есть этот снимок, который выбирает значение по умолчанию:
<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() {} }); } } ] });
Вы можете использовать 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, когда страница будет сначала рендерирована, но в этом случае было бы сложнее отслеживать «полосы».