【发布时间】:2021-05-24 10:46:46
【问题描述】:
这是我的代码:
?>
<h2>Create New Character</h2>
<form action="<?=htmlspecialchars($_SERVER['PHP_SELF'])?>" method="post">
<table>
<tr class="row"><td style="width: 150px">Enter a valid name</td><td style="width: 350px">
<input name="name" type="text" class="textfield" maxlength="20"/>
</td></tr><tr class="row"><td>Sex</td><td>
<select name="sex" class="textfield">
<option value="0">Female</option>
<option value="1" selected="selected">Male</option>
</select>
</td></tr><tr class="row"><td><? if ($cfg['vocation_choose']){echo "Vocation";} ?></td><td>
<select name="vocation" class="textfield" <? if (!$cfg['vocation_choose']){echo 'style="display: none"';} ?> >
<option value="0" selected="selected">Rook</option>
<option value="1">Mage</option>
<option value="3">Paladin</option>
<option value="4">Knight</option>
</select>
</td></tr><tr class="row"><td>
<?
$cities=array_keys($cfg['temple']);
if (isset($cities[1])){
echo 'Residence</td><td><select name="city" class="textfield">'."\r\n";
}else{
echo '</td><td><select name="city" style="display: none;" class="textfield">'."\r\n";
}
$i = 0;
while (isset($cities[$i])){
echo '<option value="'.$cities[$i].'">'.ucfirst($cities[$i]).'</option>'."\r\n";
$i++;}
?>
</select>
</td></tr><tr class="row"><td style="text-align: center;" colspan="2">
<input type="submit" name="submit" value="Submit"/>
</td></tr></table>
</form><br/>
如果有人在此之后选择了“Rook”选项,那么住宅应该只有“Rook Level”选项。如果您选择其他选项(法师、圣骑士、骑士),则应该只有两个其他选项(City1、City2)没有“Rook Level”。所以选项值应该通过选择而改变。我该如何解决这个问题?
【问题讨论】:
-
在 dropdown1 选择时提交表单并根据 dropdown1 选择的值获取 dropdwon2 选项,依此类推。
-
首先,我建议使用 JavaScript 而不是 PHP。将表单发回服务器只是为了重新渲染稍微修改的相同表单是一个笨拙的用户体验。
-
这不是一个独特的问题。你不是第一个寻求这种行为的开发者。请搜索更多。
-
尝试搜索javascript/jquery(有或没有AJAX的组合)解决方案,而不是看它。你依赖于用户的动态输入,并且由于 php 是服务器端执行的,你必须用不同的语言搜索你的解决方案。
-
好的,谢谢您的信息,我将使用 javascript 搜索解决方案