【问题标题】:Change text of label on changing of select box option using jquery?使用jquery更改选择框选项时更改标签文本?
【发布时间】:2020-09-04 14:31:26
【问题描述】:

我有一个带有多个选项的选择框,我想在选择框选项的基础上更改其他标签文本。我有标签 WEIGHT(KG)/CARGO VALUE/NO 的 3 个值。 OF SHIPMENT 并且我正在使用 jquery 来更改标签文本,但只有 WEIGHT(KG) 和 CARGO VALUE 正在更改而不是 NO。发货。

这是更改标签文本的条件。

  1. 如果 Commodity 是电子商务,则标签文本将为 WEIGHT(KG)。
  2. 如果商品是机械或电子产品,则标签文本将为 CARGO VALUE。
  3. 并且所有选项标签文本的其余部分将为 NO。发货。

请帮忙。

$(function() {
  $('#commoditySelect').change(function() {
    if ($('#commoditySelect').val() == 'Ecommerce') {
      $('#commodityLabel').text('WEIGHT (KG)');
    } else if ($('#commoditySelect').val() == 'Machinery' || 'Electronics') {
      $('#commodityLabel').text('CARGO VALUE');
    } else {
      $('#commodityLabel').text('NO. OF SHIPMENT');
    }
  });
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous" />
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<div class="container">
  <div class="row">
    <div class="col-6">
      <label>COMMODITY</label>
      <select class="form-control" id="commoditySelect">
        <option value="Ecommerce">E-Commerce</option>
        <option value="Machinery">Machinery</option>
        <option value="Plastics">Plastics</option>
        <option value="Clothing & Textile">Clothing & Textile</option>
        <option value="Eyewear">Eyewear</option>
        <option value="Electronics">Electronics</option>
        <option value="Personal Effects">Personal Effects</option>
        <option value="Automobile Spares">Automobile Spares</option>
        <option value="Food Products">Food Products</option>
        <option value="Livestock Feed">Livestock Feed</option>
        <option value="Cosmetics">Cosmetics</option>
        <option value="Chemicals">Chemicals</option>
        <option value="Pharmaceutical Products">Pharmaceutical Products</option>
        <option value="Fertilizer">Fertilizer</option>
        <option value="Rubber">Rubber</option>
        <option value="Wood">Wood</option>
        <option value="Paper">Paper</option>
        <option value="Printed Material">Printed Material</option>
        <option value="Scrap">Scrap</option>
        <option value="Footwear">Footwear</option>
        <option value="Cement">Cement</option>
        <option value="Ceramic">Ceramic</option>
        <option value="Glass">Glass</option>
        <option value="Metals">Metals</option>
        <option value="General Cargo">General Cargo</option>
      </select>
    </div>
    <div class="col-6">
      <label id="commodityLabel">WEIGHT (KG)</label>
      <input type="text" class="form-control" placeholder="Default Input" />
    </div>
  </div>
</div>

【问题讨论】:

  • if ($('#commoditySelect').val() == 'Machinery' || 'Electronics') 不正确。您需要在或 (||) 的两侧进行比较。例如。 if ($('#commoditySelect').val() == 'Machinery' || $('#commoditySelect').val() == 'Electronics')

标签: html jquery


【解决方案1】:

您需要像这样在elseif 中定义|| => $(this).val() == 'Electronics' 以触发最后一个else,以便如果没有条件匹配,标签将更改为NO. OF SHIPMENT

另外,您可以简单地使用$(this),而不是一次又一次地使用#commoditySelect

$(this) 指的是发生change 事件的元素

现场工作演示:

$(function() {
  $('#commoditySelect').change(function() {
    if ($(this).val() == 'Ecommerce') {
      $('#commodityLabel').text('WEIGHT (KG)');
    } else if ($(this).val() == 'Machinery' || $(this).val() == 'Electronics') {
      $('#commodityLabel').text('CARGO VALUE');
    } else {
      $('#commodityLabel').text('NO. OF SHIPMENT');
    }
  });
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous" />
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
<div class="container">
  <div class="row">
    <div class="col-6">
      <label>COMMODITY</label>
      <select class="form-control" id="commoditySelect">
        <option value="Ecommerce">E-Commerce</option>
        <option value="Machinery">Machinery</option>
        <option value="Plastics">Plastics</option>
        <option value="Clothing & Textile">Clothing & Textile</option>
        <option value="Eyewear">Eyewear</option>
        <option value="Electronics">Electronics</option>
        <option value="Personal Effects">Personal Effects</option>
        <option value="Automobile Spares">Automobile Spares</option>
        <option value="Food Products">Food Products</option>
        <option value="Livestock Feed">Livestock Feed</option>
        <option value="Cosmetics">Cosmetics</option>
        <option value="Chemicals">Chemicals</option>
        <option value="Pharmaceutical Products">Pharmaceutical Products</option>
        <option value="Fertilizer">Fertilizer</option>
        <option value="Rubber">Rubber</option>
        <option value="Wood">Wood</option>
        <option value="Paper">Paper</option>
        <option value="Printed Material">Printed Material</option>
        <option value="Scrap">Scrap</option>
        <option value="Footwear">Footwear</option>
        <option value="Cement">Cement</option>
        <option value="Ceramic">Ceramic</option>
        <option value="Glass">Glass</option>
        <option value="Metals">Metals</option>
        <option value="General Cargo">General Cargo</option>
      </select>
    </div>
    <div class="col-6">
      <label id="commodityLabel">WEIGHT (KG)</label>
      <input type="text" class="form-control" placeholder="Default Input" />
    </div>
  </div>
</div>

【讨论】:

    【解决方案2】:

    第二个 if 语句中的 jQuery 代码有错误。您还需要检查|| 之后的条件。这是我的 CodePen https://codepen.io/TheLazyPanda/pen/ZEWajVO 中的工作代码。

    $(function() {
      $('#commoditySelect').change(function() {
        if ($('#commoditySelect').val() === 'Ecommerce') {
          $('#commodityLabel').text('WEIGHT (KG)');
        } else if ($('#commoditySelect').val() === 'Machinery' || $('#commoditySelect').val() === 'Electronics') {
    
          $('#commodityLabel').text('CARGO VALUE');
        } else {
          $('#commodityLabel').text('NO. OF SHIPMENT');
        }
      });
    });
    

    【讨论】:

      【解决方案3】:

      这个版本做同样的事情:

      $('#commoditySelect').change(function() {
          const labels={Ecommerce:'WEIGHT (KG)',Machinery:'CARGO VALUE',Electronics:'CARGO VALUE'};
           $('#commodityLabel').text(labels[$(this).val()] || 'NO. OF SHIPMENT');
      });
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous" />
      <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
      <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
      <div class="container">
        <div class="row">
          <div class="col-6">
            <label>COMMODITY</label>
            <select class="form-control" id="commoditySelect">
              <option value="Ecommerce">E-Commerce</option>
              <option value="Machinery">Machinery</option>
              <option value="Plastics">Plastics</option>
              <option value="Clothing & Textile">Clothing & Textile</option>
              <option value="Eyewear">Eyewear</option>
              <option value="Electronics">Electronics</option>
              <option value="Personal Effects">Personal Effects</option>
              <option value="Automobile Spares">Automobile Spares</option>
              <option value="Food Products">Food Products</option>
              <option value="Livestock Feed">Livestock Feed</option>
              <option value="Cosmetics">Cosmetics</option>
              <option value="Chemicals">Chemicals</option>
              <option value="Pharmaceutical Products">Pharmaceutical Products</option>
              <option value="Fertilizer">Fertilizer</option>
              <option value="Rubber">Rubber</option>
              <option value="Wood">Wood</option>
              <option value="Paper">Paper</option>
              <option value="Printed Material">Printed Material</option>
              <option value="Scrap">Scrap</option>
              <option value="Footwear">Footwear</option>
              <option value="Cement">Cement</option>
              <option value="Ceramic">Ceramic</option>
              <option value="Glass">Glass</option>
              <option value="Metals">Metals</option>
              <option value="General Cargo">General Cargo</option>
            </select>
          </div>
          <div class="col-6">
            <label id="commodityLabel">WEIGHT (KG)</label>
            <input type="text" class="form-control" placeholder="Default Input" />
          </div>
        </div>
      </div>

      【讨论】:

        猜你喜欢
        • 2015-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 2013-10-15
        相关资源
        最近更新 更多