<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>
Поскольку WordPress уже использует jquery, вы можете попробовать что-то вроде этого:
var POST=<?php echo json_encode($_POST); ?>; for(k in POST){ $("#"+k).val(POST[k]); }
Js только решение:
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, вы можете заменить
var tmp = document.getElementsByName(tmparr[0])[0]; if (!!tmp){ document.getElementsByName(tmparr[0])[0].value = tmparr[1]; }
с:
$('*[name="'+tmparr[0]+'"]').val(tmparr[1]);
Если вы используете WordPress (как в случае с OP), вы можете использовать selected
функцию.
<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>
Попробуйте это решение для сохранения выбранного значения в выпадающем меню:
<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>