【问题标题】:(Php form) How to change option value when another option value was selected?(PHP表单)选择其他选项值时如何更改选项值?
【发布时间】: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 搜索解决方案

标签: php forms option


【解决方案1】:

尝试使用 AJAX 执行 POST 方法

您可以从这里执行所有前端发送指令,或者使用您需要的内容创建一个 javascript 函数,然后在 php 中处理数据。

PS。任何 PHP 委托都必须在您目录中的另一个 PHP 文件上完成

    $("#login_form").submit(function(e) {
      var dropdownValue= $(#dropdown).val;

      $.ajax({
        type: "POST",
        url: "dropdown.php",
        data: form.serialize(), // serializes the form's elements.
        success: function(data) {
            alert(data);
        }
      });


    });

【讨论】:

  • 这里并不总是需要 AJAX。对于发布,它应该只发布一次查看表单,而不是多次发布,这可能不是 OP 正在寻找的 awnser。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2014-07-12
  • 2017-09-07
  • 2020-10-20
  • 1970-01-01
相关资源
最近更新 更多