繁体   English   中英

下拉列表未保留提交时的选定值

[英]dropdown not retaining selected value on submit

这是一个动态下拉列表,这是我在ajax / php上的代码:

function populateSubCategory(str){
if (str == "") {
document.getElementById("category").innerHTML = "";
return;
} else { 
 if (window.XMLHttpRequest) {
//for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
//for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("subcategory").innerHTML = xmlhttp.responseText;
        }
    }
xmlhttp.open("GET","/getSubCategory.php?value="+str,true);
xmlhttp.send(null);
}
 }

getSubCategory.php:

while($row = $result->fetch(PDO::FETCH_ASSOC)){ 
$selected = ($row['id'] == $_POST['subcategory']) ? ' selected' : "";   
echo "<option value=".$row['id']. $selected.">".$row['subcategory']) ."      </option>"; 
}

问题是,提交后,它不会在下拉列表中保留所选项目。 我已经尝试过此代码,但效果不佳:

while($row = $result->fetch(PDO::FETCH_ASSOC)){ 
    if($_POST['subcategory']==$row['id']) { 
        echo "<option selected>".$row['subcategory']."</option>"; 
    } else { 
        echo "<option>".$row['subcategory']."</option>"; 
    } 

该怎么办? 请帮助,我对此感到困惑。

您使用ajax调用rt提交。 因此,您应该将子类别值传递给服务器端。 另外,您将方法指定为GET,并使用POST($ _POST ['subcategory'])进行调用。

感谢您的评论。.我已经设法通过使用此jquery方法在下拉列表中显示选定的值:

$('#subcategory').on('change', function() {
var selectedSub = $('#subcategory :selected').text();

然后在隐藏的输入字段中回显文本,因此在提交时,我可以这样做:

$subcategory = $_POST['hiddeninputfield'];

但是,这会导致另一个问题,在提交或发布后,下拉列表选择将不保留。 我希望用户仍然选择或更改下拉列表中的内容...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM