保留表单提交后select的值

<form method="get" action=""> <select name="name"> <option value="a">a</option> <option value="b">b</option> </select> <select name="location"> <option value="x">x</option> <option value="y">y</option> </select> <input type="submit" value="Submit" class="submit" /> </form> 

提交表单时,如何确保所选值在下拉列表中保持选中状态? 这个表格是在wordpress(PHP)里面的。

为了避免许多if-else结构,让javascript自动执行:

  <select name="name" id="name"> <option value="a">a</option> <option value="b">b</option> </select> <script type="text/javascript"> document.getElementById('name').value = "<?php echo $_GET['name'];?>"; </script> <select name="location" id="location"> <option value="x">x</option> <option value="y">y</option> </select> <script type="text/javascript"> document.getElementById('location').value = "<?php echo $_GET['location'];?>"; </script> 
 <select name="name"> <option <?php if ($_GET['name'] == 'a') { ?>selected="true" <?php }; ?>value="a">a</option> <option <?php if ($_GET['name'] == 'b') { ?>selected="true" <?php }; ?>value="b">b</option> </select> 

试过这个“解决”没有任何工作。 以前做过一些关于w3school的研究,记得有关于保存无线电的价值的解释。 但它也适用于select选项。 看这里的一个例子。 试试吧,玩吧。

 <?php $example = $_POST["example"]; ?> <form method="post"> <select name="example"> <option <?php if (isset($example) && $example=="a") echo "selected";?>>a</option> <option <?php if (isset($example) && $example=="b") echo "selected";?>>b</option> <option <?php if (isset($example) && $example=="c") echo "selected";?>>c</option> </select> <input type="submit" name="submit" value="submit" /> </form> 

Js唯一的解决scheme:

 var tmpParams = decodeURIComponent(window.location.search.substr(1)).split("&"); for (var i = 0; i < tmpParams.length; i++) { var tmparr = tmpParams[i].split("="); var tmp = document.getElementsByName(tmparr[0])[0]; if (!!tmp){ document.getElementsByName(tmparr[0])[0].value = tmparr[1]; } } 

或者如果你使用jQuery,你可以replace

  var tmp = document.getElementsByName(tmparr[0])[0]; if (!!tmp){ document.getElementsByName(tmparr[0])[0].value = tmparr[1]; } 

有:

  $('*[name="'+tmparr[0]+'"]').val(tmparr[1]); 

由于WordPress已经使用jQuery,你可以尝试这样的事情:

 var POST=<?php echo json_encode($_POST); ?>; for(k in POST){ $("#"+k).val(POST[k]); } 

如果您使用的是Wordpress(与OP一样),则可以使用selectedfunction。

 <form method="get" action=""> <select name="name"> <option value="a" <?php selected( isset($_POST['name']) ? $_POST['name'] : '', 'a' ); ?>>a</option> <option value="b" <?php selected( isset($_POST['name']) ? $_POST['name'] : '', 'b' ); ?>>b</option> </select> <select name="location"> <option value="x" <?php selected( isset($_POST['location']) ? $_POST['location'] : '', 'x' ); ?>>x</option> <option value="y" <?php selected( isset($_POST['location']) ? $_POST['location'] : '', 'y' ); ?>>y</option> </select> <input type="submit" value="Submit" class="submit" /> </form> 

这对我有用!

 <label for="reason">Reason:</label> <select name="reason" size="1" id="name" > <option value="NG" selected="SELECTED"><?php if (!(strcmp("NG", $_POST["reason"]))) {echo "selected=\"selected\"";} ?>Selection a reason below</option> <option value="General"<?php if (!(strcmp("General", $_POST["reason"]))) {echo "selected=\"selected\"";} ?>>General Question</option> <option value="Account"<?php if (!(strcmp("Account", $_POST["reason"]))) {echo "selected=\"selected\"";} ?>>Account Question</option> <option value="Other"<?php if (!(strcmp("Other", $_POST["reason"]))) {echo "selected=\"selected\"";} ?>>Other</option> </select> 

试试这个解决scheme,保持在下拉select的值:

 <form action="<?php echo get_page_link(); ?>" method="post"> <select name="<?php echo $field_key['key']; ?>" onchange="javascript: submit()"> <option value="">All Category</option> <?php foreach( $field['choices'] as $key => $value ){ if($post_key==$key){ ?> <option value="<?php echo $key; ?>" selected><?php echo $value; ?></option> <?php }else{?> <option value="<?php echo $key; ?>"><?php echo $value; ?></option> <?php } }?> </select> </form> 
 <form method="get" action=""> <select name="name" value="<?php echo $_GET['name'];?>"> <option value="a">a</option> <option value="b">b</option> </select> <select name="location" value="<?php echo $_GET['location'];?>"> <option value="x">x</option> <option value="y">y</option> </select> <input type="submit" value="Submit" class="submit" /> </form>