提问者:小点点

如何从下拉列表中删除不需要的选项值?


example 1

<select id="BillTypeId" name="BillTypeId" required="" class="form-control">
<option value=""></option>
<option value="9" tax-groupid="1" data-price="1500.00" data-isfixed="False">LAUNDRY</option>
<option value="1064" tax-groupid="1" data-price="0.00" data-isfixed="False">DEBIT</option>
<option value="1065" tax-groupid="1" data-price="0.00" data-isfixed="False">CREDIT</option>
</select>

假设我有一个带有动态option值的下拉列表。

我有一个函数来从Controller检索这些值。

$.ajax({
            url: '/cash/bill/PostingBillTypeCombo',
            dataType: 'html',
            data: {
                name: "BillTypeId",
                required: true,
                currencyId: selectedCurrencyId
            },
            method: 'POST',
            success: function (data) {
                debugger;
                if (data.op == "DEBIT" || data.op== "CREDIT")
                {
                $('#PostingBillTypeComboContainer').html("");
                $('#PostingBillTypeComboContainer').html(data);
                }

            },
        });

在我的下拉列表中,它有3个值--贷方,借方和洗衣。

函数(data)中,我使用data.op检查它是借方还是贷方如果(data.op==“debit”data.op==“credit”)(检查示例1),如果它包含这些名称,则删除其余的选项值,例如:laundry,只在下拉列表中显示借方和贷方值。

我是新手,请帮帮我,对不起我的英语不好


共3个答案

匿名用户

$("#BillTypeId option[value=1064]").hide();

如果您知道要隐藏哪个选项,那么使用此代码通过传递相应选项的值来隐藏该选项。

匿名用户

您可以这样做:

if (data.op == "DEBIT") {
  $("#BillTypeId option:not(:contains('DEBIT'))").hide();
} else if (data.op == "CREDIT") {
  $("#BillTypeId option:not(:contains('CREDIT'))").hide();
}

null

$("#BillTypeId option:not(:contains('DEBIT'))").hide();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>
<select id="BillTypeId">
  <option value=""></option>
  <option value="9">LAUNDRY</option>
  <option value="1064">DEBIT</option>
  <option value="1065">CREDIT</option>
</select>

匿名用户

让我们用CSS来实现:

.debit-credit option:not(.debit-credit) {
    display: none;
}

让我们把这个应用到结构上:

<select id="BillTypeId" name="BillTypeId" required="" class="form-control">
<option class="debit-credit" value=""></option>
<option value="9" tax-groupid="1" data-price="1500.00" data-isfixed="False">LAUNDRY</option>
<option class="debit-credit" value="1064" tax-groupid="1" data-price="0.00" data-isfixed="False">DEBIT</option>
<option class="debit-credit" value="1065" tax-groupid="1" data-price="0.00" data-isfixed="False">CREDIT</option>
</select>

然后,如果要隐藏Laundry,则将Debit-Credit类添加到BillTypeID,如果要显示该类,则删除该类:

$.ajax({
            url: '/cash/bill/PostingBillTypeCombo',
            dataType: 'html',
            data: {
                name: "BillTypeId",
                required: true,
                currencyId: selectedCurrencyId
            },
            method: 'POST',
            success: function (data) {
                debugger;
                if (data.op == "DEBIT" || data.op== "CREDIT")
                {
                $('#PostingBillTypeComboContainer').html("");
                $('#PostingBillTypeComboContainer').html(data);
                $('#BillTypeId').addClass("debit-credit");
                } else {
                $('#BillTypeId').removeClass("debit-credit");
                }

            },
        });

这是一个概念验证:https://jsfiddle.net/hz6vqnbj/