如何在php laravel中用户选择无线电输入的字段中隐藏或显示?

Posted

技术标签:

【中文标题】如何在php laravel中用户选择无线电输入的字段中隐藏或显示?【英文标题】:How to hide or show from field upon user choice of radio input in php laravel? 【发布时间】:2021-12-14 07:15:17 【问题描述】:

我已经为用户注册创建了一个表单,但是如果用户选择其中一个,表单会显示或隐藏额外的字段

我有这个字段:

 <div class="form-group row" style="display:none">
    <label for="spec" class="col-md-4 col-form-label text-md-right"> 
       __('spec') 
    </label>
    <div class="col-md-6">
        <input id="spec" type="text" class="form-control @error('spec') is-invalid @enderror" name="spec" value=" old('spec') " autocomplete="spec" autofocus>
      @error('spec')
          <span class="invalid-feedback" role="alert">
              <strong> $message </strong>
          </span>
       @enderror
     </div>
  </div>

默认隐藏

我有这些无线电输入:

 <div>
    <input type="radio" id="css" name="fav_language" value="CSS">
    <label for="css">CSS</label><br>
    <input type="radio" id="javascript" name="fav_language" value="JavaScript">
    <label for="javascript">JavaScript</label>
 </div>

因此,如果用户选择了第一个收音机,则将隐藏第一个字段(规范),如果用户选择了第二个收音机,则(规范)字段将不再隐藏

如何使用 if 语句来实现?

【问题讨论】:

你必须使用 JavaScript 或 jQuery。看***.com/questions/13152927/… 【参考方案1】:

我基本同意 Devsi Odedra 的评论。它会更容易,它会给你更多的灵活性来使用 Javascript,但你不必这样做。有一个仅使用 CSS 的解决方案。

要使用 CSS,仅 html 代码必须是这样,因此需要隐藏或显示的 div 必须是 input“年轻兄弟”。换句话说,div 必须放在同一层并且在input 之后(不需要直接放在之后)。这样你就可以组合general sibling selector和:checked pseudo-class selector

.show-only-if-css-is-checked 
  display: none;


#css:checked ~ .show-only-if-css-is-checked 
  display: block;
<div>
  <input type="radio" id="css" name="fav_language" value="CSS">
  <label for="css">CSS</label><br>
  <input type="radio" id="javascript" name="fav_language" value="JavaScript">
  <label for="javascript">JavaScript</label>

  <div class="show-only-if-css-is-checked form-group row">
    <label for="spec" class="col-md-4 col-form-label text-md-right"> 
       __('spec') 
    </label>
    <div class="col-md-6">
      <input id="spec" type="text" class="form-control @error('spec') is-invalid @enderror" name="spec" value=" old('spec') " autocomplete="spec" autofocus> @error('spec')
      <span class="invalid-feedback" role="alert">
              <strong> $message </strong>
          </span> @enderror
    </div>
  </div>
</div>

CSS 部分甚至可以更短

#css:not(:checked) ~ .show-only-if-css-is-checked 
  display: none;

编辑:我很想从问题中删除 laravel 标记,但是您想要实现的目标也可以使用 Laravel livewire 来完成

【讨论】:

以上是关于如何在php laravel中用户选择无线电输入的字段中隐藏或显示?的主要内容,如果未能解决你的问题,请参考以下文章

php Laravel - 在多个选择输入字段中串行的数组

如何使用 PHP Laravel 将输入字段与列数据库中的数据匹配?

如何在 Laravel 4 中选择相关模型计数为 0 的模型?

如何获取用户选择的按钮值并在 laravel 5.4 的控制器上使用它

无线网如何设置认证密码

输入是选择/下拉/自动完成,但也允许用户输入值 laravel