我不知道如何在选择选项后放置所选代码。
我正在使用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>