【问题标题】:how to hide and show button using dropdown options?如何使用下拉选项隐藏和显示按钮?
【发布时间】:2019-09-23 15:54:12
【问题描述】:

我只想默认隐藏一个按钮,当我选择任何下拉列表时,按钮就会出现

FIDDLE HERE

$(function() {
  $('#cashbill').change(function() {
    $('#bill_icon').hide();
    $('#bill_icon' + $(this).val()).show();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group col-4" style="margin-bottom: 0px;">
  <label class="col-sm-12 control-label p-sm-0">Bill type :</label>
  <select class="form-control selectsch_items" name="cashbill" id="cashbill" required>
    <option value="">Choose an items</option>
    <option value="1">Raw</option>
    <option value="2">Spare</option>
    <option value="3">Others</option>
  </select>
</div>

<div class="form-group cash-billbtn">
  <label class="col-sm-12 control-label p-sm-0"></label>
  <button type="button" class="bill-btn" id="bill_icon">Bill</button>
</div>

显示..我刚刚尝试了 jQuery,但它不适合我..

【问题讨论】:

  • 是否要先隐藏按钮 Bill 并在选择标签中选择项目时显示此按钮?还有这个代码“$('#bill_icon' + $(this).val()).show();” :当用户选择值为“1 或 2 或 3”的项目时,ID 名称为 bill_icon1、bill_icon2、bill_icon3。这些名称在您的 html 中不存在。
  • 你可以使用toggleClass,见my answer。使用css 控制显示效果更好、更灵活。
  • 一个小疑问..“看到这里有 3 个下拉值,1.Raw,2.spare 和 3.others.. 现在我想点击 raw 或备用值然后按钮想要来..否则按钮将永远隐藏..怎么办?”例如,如果我选择 others 我不想显示按钮..

标签: javascript jquery html css bootstrap-4


【解决方案1】:

先隐藏按钮,然后检查是否没有值选择隐藏或显示(使用值长度如下)

$(this).val().length ?  $('#bill_icon').show() :  $('#bill_icon').hide();

见下sn-p

$(function() {
 
  $('#bill_icon').hide();
  $('#cashbill').change(function() { 
     $(this).val().length ?  $('#bill_icon').show() :  $('#bill_icon').hide();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group col-4" style="margin-bottom: 0px;">
  <label class="col-sm-12 control-label p-sm-0">Bill type :</label>
  <select class="form-control selectsch_items" name="cashbill" id="cashbill" required>
    <option value="">Choose an items</option>
    <option value="1">Raw</option>
    <option value="2">Spare</option>
    <option value="3">Others</option>
  </select>
</div>

<div class="form-group cash-billbtn">
  <label class="col-sm-12 control-label p-sm-0"></label>
  <button type="button" class="bill-btn" id="bill_icon">Bill</button>
</div>

如果您想通过文本值而不是值来检查,请使用以下 sn-p :

$(function() {
 
  $('#bill_icon').hide();
  $('#cashbill').change(function() { 
    var text = $(this).children("option:selected").text();
   ( text == "Raw" || text == "Spare"  )?  $('#bill_icon').show() :  $('#bill_icon').hide();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="form-group col-4" style="margin-bottom: 0px;">
  <label class="col-sm-12 control-label p-sm-0">Bill type :</label>
  <select class="form-control selectsch_items" name="cashbill" id="cashbill" required>
    <option value="">Choose an items</option>
    <option value="1">Raw</option>
    <option value="2">Spare</option>
    <option value="3">Others</option>
  </select>
</div>

<div class="form-group cash-billbtn">
  <label class="col-sm-12 control-label p-sm-0"></label>
  <button type="button" class="bill-btn" id="bill_icon">Bill</button>
</div>

【讨论】:

  • 它的工作兄弟.. 谢谢.. 对知识目的有一个小疑问.. “看到这里有 3 个下拉值,1.Raw,2.备用和 3.others.. 现在我想点击原始值或备用值然后按钮想要来..否则按钮将永远隐藏..如何?”例如,如果我选择 others 我不想显示按钮..
  • 只需检查值,通过使用$(this).children("option:selected").text()获取其文本值而不是选项属性值来检查其是否等于原始值或备用值参见第二个添加的片段
【解决方案2】:

在 jQuery 中可以这样做:

$(function() {
    $('#bill_icon').hide();

  $('#cashbill').change(function() {
    if (this.value) $('#bill_icon').show();
    else $('#bill_icon').hide();
  });
});

但这有一些问题: - 如果您的页面延迟加载,它将显示按钮,然后将其隐藏(闪烁项目) - 这取决于是否启用了 JS

我建议你,隐藏css上的按钮,然后控制它的可见性。


当我想要这种行为时我会怎么做:

<label>Bill type :</label>
<select name="cashbill" id="cashbill" required>
  <option value="">Choose an items</option>
  <option value="1">Raw</option>
  <option value="2">Spare</option>
  <option value="3">Others</option>
</select>
<button type="button">Bill</button>

在 CSS 上默认隐藏,仅在 select 有有效选项时显示:

select:invalid + button {
  display: none;
}
select:valid + button {
  display: inline-block;
}

【讨论】:

    【解决方案3】:

    另一种方法是使用 jQuery 的 toggleClass:

    1. 给按钮添加hidden类,它会在第一次加载时隐藏按钮。
    2. selectchange 事件中使用toggleClass,如下所示:

      $('#cashbill').change(function() {
          $('#bill_icon').toggleClass('hidden', $(this).val() === '');    
      });
      

    基本上,当所选项目不是第一项时,您会阻止切换类。

    Here 正在工作。

    【讨论】:

      【解决方案4】:

      像这里一样在上面添加css。

        .bill-btn{
          display: none;
        }
      

      像这样改变你的 jquery。

      $(function() {
         $('#cashbill').change(function() {
         if($(this).val() != "others"){
          $('#bill_icon').hide();
          $('#bill_icon' + $(this).val()).show();
          $(".bill-btn").show(); // added this line here
        }
       });
      });
      

      【讨论】:

      • 谢谢你,兄弟..还有一个关于知识目的的小疑问..“看到这里有 3 个下拉值,1.Raw,2.备用和 3.others..现在我想点击原始值或备用值然后按钮想要来..否则按钮将永远隐藏..如何?”例如,如果我选择 others 我不想显示按钮..
      • @Joe 我已经更新了答案,据我所知请检查并告诉我这是你问的问题
      • 如果我选择其他选项我不想显示按钮.. 只显示选择原始和备用选项的按钮..
      猜你喜欢
      • 2020-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多