选中的选项必须在onchange功能之后显示

The selected option must shown after the function of onchange

本文关键字:onchange 功能 之后 显示 选项      更新时间:2023-09-26

我有两个下拉菜单,就像标题一样…选中的选项必须在onchange功能后显示,意思是当它自动刷新时,选中的选项必须保持并显示选中的选项。问题是当我从第二个下拉菜单中选择一个选项时,它具有onchange功能,它会刷新并返回到默认选项。

下面是代码

<div id="page-wrapper">
	<div class="container-fluid">
		<div class="row">
			<div class="col-lg-12">
				<div class="col-lg-10">
					<h1 class="page-header">
						BRANCHES
					</h1>
				</div>
				<div class="col-lg-2">
					<a class="btn btn-default bad-marg" href="index.php?act=abr" role="button">Add Branch</a>
				</div>
			</div>
		</div>
		<div class="row">
			<div class="col-lg-12">
			<div id="form">
							<form action="func_vbrs.php" method="POST" class="form-horizontal">
								<fieldset>
				<div class="row">
				<div class="col-lg-4">
					<div class="form-group">
						<label for="bl" class="control-label col-xs-3"><p class="left">Branch</p></label>
						<div class="col-xs-8">
							<div class="req">
							<select name="bid" class='form-control'>
								<option value='' default style='color:gray;'>Branch</option>
									<?php
										include_once "config.php";
										$sql="select branchID, b, bl from branch where b!='HOK'";
										$stmt=$con->prepare($sql);
										$stmt->execute();
										$stmt->bind_result($bid, $b, $bl);
										$stmt->store_result();
										
										while($stmt->fetch()){
											echo '<option value="'.$bid.'">'.$b.'-'.$bl.'</option>';
										}	
									?>
							</select>
							</div>
						</div>
						<div class="col-xs-1">
						</div>
					</div>
				</div>
				<div class="col-lg-4">
					<div class="form-group">
						<label for="cat" class="control-label col-xs-3"><p class="left">Category</p></label>
						<div class="col-xs-8">
							<div class="req">
								<select name="brcat" class="form-control"  onchange='this.form.submit()'>
									<option value="" default style="color:gray;">Category</option>
									<option value="Stock">Stock</option>
									<option value="Sales">Sales</option>
									<option value="Stock Transfer">Stock Transfer</option>
								</select>
							</div>
						</div>
						<div class="col-xs-1">
						</div>
					</div>
				</div>
				<div class="col-lg-4">
				</div>
				</div>
				<noscript><input type="submit" value="Submit"></noscript>
				</fieldset>
				</form>
				</div>
			</div>
		</div>
	</div>
</div> 

正如您可以看到的第二个下拉是类别,如果用户已经在自动刷新或onchange功能之后选择了一个选项,它将返回默认选项。

您需要在页面加载时交叉检查post,并适当添加selected标记。如果你使用循环来创建你的选项,有更优雅的解决方案和更少的代码,但这是另一个问题。

<?PHP
    if (!empty($_POST['brcat'])){
        $selected_item = $_POST['brcat'];
    } else { $selected_item = Null; }
    function selcheck($item1, $item2){
        if ($item1 == $item2){
            $ret = " selected='"selected'" ";
        } else {
            $ret = "";
        }
        return($ret);
    }
?>
<select name="brcat" class="form-control"  onchange='this.form.submit()'>
    <option value="" default style="color:gray;">Category</option>
<?PHP
$sel = selcheck("Stock",$selected_item);
?>
<option value="Stock"<?=$sel?>>Stock</option>
<?PHP
$sel = selcheck("Sales",$selected_item);
?>
<option value="Sales"<?=$sel?>>Sales</option>
<?PHP
$sel = selcheck("Stock Transfer",$selected_item);
?>
<option value="Stock Transfer"<?=$sel?>>Stock Transfer</option>