我有一个选择列表,但在页面重新加载时,列表中的数据不会保存为corse。 我通过读取$ _GET中的变量修复了TextBoxes和Radio按钮。 以下是我现在的表格示例:
<form action="" id="exampleForm" method="get">
<input type="checkbox" name="exampleCheckbox" <?php if (isset($_GET['exampleCheckboxStatus'])) {echo "checked";} ?>>Check this
</br>
<select name="exampleList" multiple>
<option>Apple</option>
<option>Banana</option>
<option>Cherry</option>
</select>
<input type="submit" value="Submit" id="submitButton"> </form>
我想在提交后保留'exampleList'的值 (我留在同一页面上)
我在这里看过几乎看起来像我要求的帖子,但大多数人都想使用javascript。我的问题是否有解决方案,看起来与我现在拥有的相似?我想用php解决这个问题,因为我不认为我对Javascript(还)有足够的了解
答案 0 :(得分:2)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
var opts = localStorage.getItem('opts'); // get selected items from localStorage key
opts = opts.split(','); // split result from localstorage to array
$('#exampleList').val(opts); // select options with array
});
</script>
<html>
<body>
<select id="exampleList" multiple>
<option value="apple">Apple</option>
<option value="banana">Banana</option>
<option value="cherry">Cherry</option>
</select>
</body>
</html>
当您发布表单时,您只需要将选定的选项值(逗号分隔)写入localstorage。
答案 1 :(得分:1)
我终于找到了解决方案: 唯一的缺陷是:)的顺序 但是因为我使用插件来显示它并不重要。
修复: 我创建了2个数组列表 每个人都有 list1 带有所有选定值的 list2
然后我从 list1 中减去 list2 并且没有重复项 所以我可以用不同的打印方法打印。
<?php error_reporting(E_WARNING);
$fruitArray = array("Apple", "Banana", "Cherry", "Durian", "Eggfruit", "Fig", "Grapefruit");
$selectedFruitArray = $_GET['exampleList'];
$fruitArray = array_diff($fruitArray, $selectedFruitArray);
?>
<form action="" method="get">
<select name="exampleList[]" multiple>
<?php
foreach($fruitArray as $value) {
echo "<option value='$value'>$value</option>";
}
foreach($selectedFruitArray as $value) {
echo "<option value='$value' selected>$value</option>";
}
?>
</select>
<input type="submit">
</form>
答案 2 :(得分:0)
使用FormRepo,一个专门用于保留表单数据的插件 在页面上刷新。
它的用法也很简单:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="FormRepo.js"></script>
<script>
var $form = $('#input')
, $output = $('#output')
, repo = new FormRepo('restclient')
;
// get the last submitted values back
repo.restore($form/*, $form.attr('id')*/ ); // don't necessarily need an identifier
$form.submit(function (e) {
// preserve the last submitted values
repo.preserve($form/*, $form.attr('id')*/ ); // don't necessarily need an identifier
});
console.log( repo.all() );
</script>
答案 3 :(得分:0)
您可以使用会话来完成。这是使用它的方式,您可以在会话中存储最后选择的值。即使您重新加载paga,也不会销毁会话值。
例如,
SELECT
@Principal= IIF(optionfieldvalue='', NULL, CAST(optionfieldvalue as decimal(38, 18)))
FROM
@DATA
WHERE
TemplateFieldId = 47
提交后会话中设置值的PHP代码:
<?php
session_start(); // Other Code
<div>
<p>Subtitle needs to be
<input type="radio" name="subTitleRadio" <?php if ($_SESSION['subTitleRadio'] != "LIKE") echo "checked"; ?> value="LIKE">contain
<input type="radio" name="subTitleRadio" <?php if ($_SESSION['subTitleRadio'] == "=") echo "checked"; ?> value="=">be equal to
</p>
<input type="search" name="subTitleSearchBox" placeholder="filter for subtitle" class="chosenStyle" value="<?php echo $_GET['subTitleSearchBox'];?>">
</div> //Other Code
?>
相同的代码对我有用。
答案 4 :(得分:0)
首先在选项的值参数处,然后您可以检查exampleList是否具有正确的值并使用它。例如:
<option value="apple" <?php if (isset($_GET['exampleList']) && $_GET['exampleList'] == "apple") echo "selected=\"selected\""; ?>>Apple</option>
答案 5 :(得分:0)
嗯,你可以尝试这些方法。这有点长,你可以把它缩短一点。通过这种方式展示,我希望它更容易理解。
<form action="" id="exampleForm" method="get">
<?php
if (isset($_GET['exampleCheckboxStatus'])) {
echo '<input type="checkbox" name="exampleCheckbox" checked> Check this';
} else {
echo '<input type="checkbox" name="exampleCheckbox"> Check this';
?>
<br />
<select name="exampleList[]" multiple>
<?php
if( in_array('apple', $_GET['exampleList']) ) {
echo '<option value="apple" selected>Apple</option>';
} else {
echo '<option value="apple">Apple</option>';
}
if( in_array('banana', $_GET['exampleList']) ) {
echo '<option value="banana" selected>Banana</option>';
} else {
echo '<option value="banana">Banana</option>';
}
if( in_array('cherry', $_GET['exampleList']) ) {
echo '<option value="cherry" selected>Cherry</option>';
} else {
echo '<option value="cherry">Cherry</option>';
}
?>
</select>
<input type="submit" value="Submit" id="submitButton">
</form>
请注意,我将[]添加到选择的名称并更正了br标签。
添加[]会将类型从“字符串”(文本)更改为数组(多个文本)。然后我们可以检查包含哪些文本。
亲自尝试,稍微使用代码。