【问题标题】:<tbody> not hiding when a dropdown value changed<tbody> 下拉值更改时不隐藏
【发布时间】:2023-04-05 14:23:01
【问题描述】:

我有一个表格,想要在下拉值更改时隐藏或显示一组行。这个页面有一个母版页这是我的下拉框

$(function() {
  $("#ddlIncomeAssement").change(function() {
    var status = this.value;

    if (status == "FULLDOCPAYG") {
      $('#FullDocPayg').show();
      $('#FullDocSelf').hide();
      $('#LiteDoc').hide();
      $('#RentalIncome').hide();
    } else if (status == "FULLDOCSELF") {
      $('#FullDocPayg').hide();
      $('#FullDocSelf').show();
      $('#LiteDoc').hide();
      $('#RentalIncome').hide();
    } else if (status == "LITEDOC") {
      $('#FullDocPayg').hide();
      $('#FullDocSelf').show();
      $('#LiteDoc').show();
      $('#RentalIncome').hide();

    } else if (status == "RENTALINCOME") {
      $('#RentalIncome').show();
      $('#FullDocPayg').hide();
      $('#FullDocSelf').show();
      $('#LiteDoc').show();
    }
    // alert(status);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="ddlIncomeAssement">
  <option value="FULLDOCPAYG">FULL DOC-PAYG</option>
  <option value="FULLDOCSELF">FULL DOC- SELF EMPLOYED</option>
  <option value="LITEDOC">LITE DOC</option>
  <option value="RENTALINCOME">RENTAL INCOME VERIFICATION AND ASSEMENT</option>
</select>

<table>
  <tbody id="FullDocPayg">
    <tr>
      <td>FullDocPayg</td>
    </tr>
  </tbody>
  <tbody id="FullDocSelf">
    <tr>
      <td>FullDocSelf</td>
    </tr>
  </tbody>
  <tbody id="LiteDoc">
    <tr>
      <td>LiteDoc</td>
    </tr>
  </tbody>
  <tbody id="RentalIncome">
    <tr>
      <td class="light-blue-background text-center" colspan="4">RENTAL INCOME VERIFICATION AND ASSESSMENT</td>
    </tr>
    <tr class="text-left">
      <td class="text-center">6.1</td>
      <td>Confirmation of rental income held using<br /> - Rental statements;<br /> - Lease Agreement;<br /> - 2 x rental estimates (if not currently rented); or<br /> - Valuation Report (if not currently rented)
        <br /> If multiple properties use Rental Calculator and ensure correct allocation to ownership
      </td>

    </tr>
  </tbody>
</table>

不确定为什么 tbody 没有隐藏 它在 sn-p 中运行,但不是在实际中运行。有一个母版页。这是否会导致脚本运行出现问题。检查视图源时,我找不到元素

也尝试this method

【问题讨论】:

  • 您能否制作一个显示问题的 sn-p 示例?
  • 它运行良好 - 有什么问题?
  • 我已经编辑了你的问题,将你的代码变成了一个 sn-p。我保留了原始代码,但是我确实 将示例行添加到您的&lt;tbody&gt; 元素中。也就是说,您的代码工作正常。您需要编辑您的问题以提供一个重现问题的示例,否则就像试图让机械师修理一辆没有任何问题的汽车。
  • 我不确定我错过了什么。它在页面中不起作用。如果页面有母版页,结果会有所不同吗
  • 如果是 asp.net 和 webforms,可能要进行名称修改,通过在浏览器中查看源代码来检查呈现给页面的 HTML。

标签: javascript jquery html asp.net webforms


【解决方案1】:

您不能只拥有 tbody —— 您需要将 &lt;tr&gt;&lt;td&gt; 放入其中。请参见下面的示例:

$("#ddlIncomeAssement").change(function () {
    var status = this.value;
    alert(status);

    if (status == "FULLDOCPAYG") {
        $('#FullDocPayg').show();
        $('#FullDocSelf').hide();
        $('#LiteDoc').hide();
        $('#RentalIncome').hide();
    }
    else if (status == "FULLDOCSELF") {
        $('#FullDocPayg').hide();
        $('#FullDocSelf').show();
        $('#LiteDoc').hide();
        $('#RentalIncome').hide();
    }
    else if (status == "LITEDOC") {
        $('#FullDocPayg').hide();
        $('#FullDocSelf').show();
        $('#LiteDoc').show();
        $('#RentalIncome').hide();

    }
    else if (status == "RENTALINCOME") {
        $('#RentalIncome').show();
        $('#FullDocPayg').hide();
        $('#FullDocSelf').show();
        $('#LiteDoc').show();
    }
    // alert(status);
});
#FullDocPayg{display:none;}
#FullDocSelf{display:none;}
#LiteDoc{display:none;}
#RentalIncome{display:none;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="ddlIncomeAssement">
  <option value="FULLDOCPAYG">FULL DOC-PAYG</option>
  <option value="FULLDOCSELF">FULL DOC- SELF EMPLOYED</option>
  <option value="LITEDOC">LITE DOC</option>
  <option value="RENTALINCOME">RENTAL INCOME VERIFICATION AND ASSEMENT</option>
</select>

<br>

<table>
  <tbody id="FullDocPayg"><tr><td>This is FullDocPayg</td></tr></tbody>
  <tbody id="FullDocSelf"><tr><td>Full Doc Self</td></tr></tbody>
  <tbody id="LiteDoc"><tr><td>Lite Doc</td></tr></tbody>
  <tbody id="RentalIncome"><tr><td>Rental Income</td></tr></tbody>
</table>

【讨论】:

  • 嗯。如果这确实是问题的原因,我可能有点匆忙尝试解决这个问题。我在 OP 的 HTML 位中添加了行和封装 &lt;table&gt;,但我认为它们过于简短,例如为了:P
  • 我不确定我错过了什么。它在页面中不起作用。如果页面有母版页,结果会有所不同吗
  • tbody 在视图源中丢失。为什么会发生这种情况
【解决方案2】:

我没有调查您的实际问题,因为我们可以大大简化它。

我们可以使用包含要显示的元素的data attribute。隐藏所有 tbody 元素,然后显示我们想要的元素。

$(function() {
  $("#ddlIncomeAssement").change(function() {
    $("#target tbody").hide();
    $($(this).children(":selected").data("display")).show();    
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="ddlIncomeAssement">
  <option value="FULLDOCPAYG" data-display="#FullDocPay">FULL DOC-PAYG</option>
  <option value="FULLDOCSELF" data-display="#FullDocSelf">FULL DOC- SELF EMPLOYED</option>
  <option value="LITEDOC" data-display="#FullDocSelf,#LiteDoc">LITE DOC</option>
  <option value="RENTALINCOME" data-display="#FullDocSelf,#LiteDoc,#RentalIncome">RENTAL INCOME VERIFICATION AND ASSEMENT</option>
</select>

<table id="target">
  <tbody id="FullDocPayg">
    <tr>
      <td>FULLDOCPAYG</td>
    </tr>
  </tbody>
  <tbody id="FullDocSelf">
    <tr>
      <td>FULLDOCSELF</td>
    </tr>
  </tbody>
  <tbody id="LiteDoc">
    <tr>
      <td>LITEDOC</td>
    </tr>
  </tbody>
  <tbody id="RentalIncome">
    <tr>
      <td>RENTALINCOME</td>
    </tr>
  </tbody>
</table>

【讨论】:

  • OP 的逻辑似乎稍微复杂一些。例如,选择“租金收入”会显示 三个 &lt;tbody&gt; 项目,而不仅仅是“租金收入”一项。
  • @TylerRoper,是的,我刚刚注意到了!
  • tbody 元素在视图源中丢失。任何线索
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多