Laravel Bootstrap 4 - 2 个选项使用按钮作为单选检查,根据选择显示相关字段

Laravel Bootstrap 4 - 2 options using buttons as radio checks, showing relevant field depending on choice

正如您在下面看到的,我有(在我看来)两个样式精美的选项可供选择。这些是显示为 bootstrap 按钮的单选按钮。

下面的两个部分应该被隐藏,只有在选择了适当的选项时才会显示。

这就是我碰壁的地方。我尝试通过 CSS、JQuery、JavaScript onClick、Bootstrap collapse。没有任何效果。

Creating user view

data-toggle="buttons" 似乎是罪魁祸首。然而... 没有它 hiding/showing,折叠可以工作,但按钮不会保持在 selected/checked 状态。 有了它,按钮的行为就很好,但是 showing/hiding 相关部分不起作用。

有没有人解决过类似问题或知道答案?

代码:

    <div class="row justify-content-center">
          <div class="form-group col-md-4">
            <label for="type">User type:</label>
            <div class="row justify-content-center btn-group-toggle" data-toggle="buttons">
              <label class="col-4 btn btn-outline-primary">
                <input type="radio" name="type" value="Employee" autocomplete="off">Employee
              </label>
              <label class="col-4  offset-1 btn btn-outline-primary">
                <input type="radio" name="type" value="External" autocomplete="off">External
              </label>
            </div>
          </div>
        </div>
        <div id="employee" class="row justify-content-center">
          <div class="form-group col-md-4">
            <label for="staff_number">Employee number:</label>
            <input type="text" class="form-control" name="staff_number">
            <small class="form-text text-muted">example: 7xxxxx</small>
          </div>
        </div>
        <div id="external" class="row justify-content-center">
          <div class="form-group col-md-4">
            <label for="company_name">Company name:</label>
            <input type="text" class="form-control" name="company_name">
            <small class="form-text text-muted">Who is this person working for?</small>
          </div>
        </div>
        <div class="row justify-content-center">
          <div class="form-group col-md-4 text-center">
            <button type="submit" class="btn btn-success">Add user</button>
            <a href="{{route('users-list')}}"><button type="button" class="btn btn-dark">Back</button></a>
          </div>
        </div>
  </form>
</div>

编辑 2019 年 7 月 1 日

这很有趣。在桌面上创建了简单的 index.html 文件并将此代码粘贴到:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

<h1>JQuery tests</h1>
<form>
Please choose but one: 
<input type="radio" name="portion_selection" value="button_one"/>
...or the other: 
<input type="radio" name="portion_selection" value="button_two"/>
  <div id="portion_one" style="display:none">
    Input the one: <input type="text" name="reference"/>
  </div>
  <div id="portion_two" style="display:none">
    Tell me the other: <input type="text" name="reference"/>
  </div>
</form>

<script type="text/javascript">
  $("input[name='portion_selection']:radio")
    .change(function() {
      $("#portion_one").toggle($(this).val() == "button_one");
      $("#portion_two").toggle($(this).val() == "button_two"); });
</script>

它完全符合我的要求。我假设以后可以设置单选按钮的样式。 所以我将相同的代码粘贴到 blade 文件中,你猜怎么着?切换再次不起作用!!

我想我发现了冲突:

<head>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

<script src="{{ asset('js/app.js') }}" defer></script>
</head>

所以当我评论 Laravel 的 js 线收音机工作并切换相关部分时,但正如预期的那样,所有 Laravel Bootstrap 元素都在 [=20= 上中继] 不工作,即。我无法关闭警报。

解决方案:

<script src="{{ asset('js/app.js') }}" defer></script> 中的

defer 属性使 js 在整个页面加载后加载,我使用的脚本必须在此之前加载。

这对我有用。