当选项基于另一个选择时,保持显示所选选项


keep selected option displayed when options based on another select

我有一个HTML<form>具有两个独立<选择>。<option>在第二<select>基于<option>在第一<选择>。使用mcravens的建议,这很好,并在这里进一步详细说明。

尽管第一<select>值在按下<submit>按钮,第二个<select>始终重置为"--select one--"。我希望第二选择的值保持显示和不变,直到手动改变或者第一<选项>已更改(这将更改第二个可用选项(。

我已经能够通过在select中添加名称来捕获第二个选定值的值:(HTML(

<select name="CSsize" id="size">
   <option value="">Select...</option>
</select>

然后使用$_POST来收集所选择的值:(PHP(

if(isset($_POST["CSsize"]) && !empty($_POST["CSsize"])) { 
    $CSsize = $_POST["CSsize"];} else { $CSsize="0";}

这意味着我可以捕获第二<提交后选择>,并在剩余代码中使用它。没有问题,我的问题纯粹是如何保持所选值显示在第二<在页面上选择>。

我试着修改了第二个<使用PHP echo等选择>,例如:

<option <?php if ($CSsize != "0" ) echo 'selected' ; ?> value=""></option>

并尝试使用if语句修改.js,例如:

if ($("#size").val() !== "Select...") {

似乎什么都不起作用,第二个<select>每次都会自动重置。

我很想得到一些帮助,告诉我哪里出了问题?!谢谢

我可以捕获第二个<提交后选择>并在剩余代码中使用

如果我理解正确,您可以使用以下script区域中捕获的结果生成optionselected属性

"<option>item1...</option><option <?php echo .... 'selected'; ?> >item1...</option>"...

如果使用php.js file操作不是一个选项,则可以在select元素中使用data属性并通过.data()检索它

然后在.ready()结束时调用$("#type").change()将像往常一样执行处理程序并构造第二个选择框。

 $("#type").change();

请参阅演示

当您加载页面并获得第二次选择的值时,只需调用以下代码

var val = $('#type').val();
$("#size").html(options[val]);

检查小提琴链接为您的解决方案

希望这能帮助