是否只有在php中选择了选项后才显示命令



我不知道如何在选择选项后放置所选代码。

我正在使用laravel,但我认为它与laravel框架无关…

<select id="idjenisuniform" name="idjenisuniform"  style="width: 100%;">
<option value=""></option>
@foreach($idjenisuniform as $g)
<option value="{{$g->id}}" >{{$g->badanuniform}}</option>
@endforeach
</select>

(idjenisuniform来自控制器,它工作),但我只是不知道如何从选项中选择后做到这一点。

选择police->id为1

我想做:

如果其中的选项是1,那么它将显示其他选项以显示他所在的组。例如:detective.

总之,我试图做一个选择选项,在它选择它之后,它将继续到下一个选择选项对应于前一个选项的id。

请帮助。

既然你想要一个依赖于用户交互的效果,那么最好使用javascript来实现你想要的效果。使用php,选择必须一路返回到web服务器进行处理,然后结果被一路发送回浏览器,整个网页将刷新。使用javascript,一切都在浏览器中进行。

但是,你要求一个php解决方案,所以这里是最简单的方法。假设第一个选择元素被命名为"select-one";第二个选择元素命名为"select-two">

创建两个表单。注意,第二个表单有一个ID。
[form action="/url/" method="whatever"]
[form id="other-form" action="/url/" method="post"]

在主表单(没有ID的表单)中,放置所有表单元素。此外,放置另一个与第一个选择元素同名的隐藏元素("select-one");

[form]
[input type="hidden" name="select-one"]
... all other elements
[/form]

现在,当你添加第一个select元素时,给它一个新属性,使它与"other-form"而不是主要形式。同时,给它一个ID。

[select id="select1" name="select-one" form="other-form"]

你必须添加一点javascript,但它不是很多。如果你没有任何其他javascript设置,只需把它放在网页的底部,就在[/body]标签的上方。

[script]
const select1 = document.querySelector('#select1');
select1.addEventListener('change', (event) => event.target.form.submit());
[/script]

javascript将提交与#select1关联的表单。因为我们把元素赋值给了other-form,所以它就是要提交的表单。

对于php:我已经很长时间没有使用Laravel了,所以我在这里只提供一些简单的php。

$options_one = ['One', 'Two', 'Three'];
$options_two = [
'One' => ['Foo', 'Bar', 'Baz'],
'Two' => ['Boom', 'Bang', 'Bam'],
'Three' => ['Fee', 'Fie', 'Fo', 'Fum']
];
$select_one = (isset ($_POST['select-one']) ? $_POST['select_one'] : false;
// do some input validation

现在对于表单:

<form id="other-form" method="post" action = ""></form>
<form id="main-form" action="">
<input type="hidden" name="select-one" value="<?php echo $select_one ?>">
<!-- This element is assigned to "other-form" -->
<select form="other-form" name="select-one" id="select1">
<option value="">Select One...</option>
<?php foreach($options_one as $option) {
$option = ($select_one === $option) ? "<option selected>$option</option>" : "<option>$option</option>";
echo $option;
}?>
</select>
<select name="select-two">
<?php
$options = ["The first choice has not been selected"];
if (array_key_exists($select_one, $options_two)) {
$options = $options_two[$select_one];
}
foreach ($options as $option) {
echo "<option>$option</option>";
}
?>
</select>
<!-- other inputs in your form -->
</form>

最新更新