0

選択リストでアイテムを無効/非表示にすることはできますか? 私が達成しようとしているのは、いくつかのチェックボックスに応じて、それらが選択されている場合、フィールドがドロップダウンに表示されるようにすることです。ただし、常にドロップダウンにある必要がある必須フィールドがあり、それらはすべて順不同である必要があります。

チェックボックス:

<table class="Fields"><tr>
    <td><%=Html.CheckBox("Field1", Model.DisplayField1, new { value = "Field1" })%> Field 1</td>
    <td><%=Html.CheckBox("Field2", Model.DisplayField2, new { value = "Field2" })%> Field 2</td>
    <td><%=Html.CheckBox("Field3", Model.DisplayField3, new { value = "Field3" })%> Field 3</td>
</tr><tr>
    <td><%=Html.CheckBox("Field4", Model.DisplayField4, new { value = "Field4" })%> Field 4</td>
    <td><%=Html.CheckBox("Field5", Model.DisplayField5, new { value = "Field5" })%> Field 5</td>
    <td><%=Html.CheckBox("Field6", Model.DisplayField6, new { value = "Field6" })%> Field 6</td>
</tr></table>

落ちる:

<table cellpadding="0" cellspacing="0">
    <tr>
        <td>Sort 1</td>
        <td><%= Html.DropDownList("drpSortColumn1", (SelectList)ViewData["SortColumns"])%></td>
    </tr>
</table>

ドロップダウンには、常にそこにあるはずのすべてのチェックボックスフィールドといくつかの追加フィールドが含まれています。そのため、チェックされているかどうかに応じて、すべてを動的に削除して追加できます。UIでもこれを行う必要があります。理想的には何とかjquery。では、これにはどのようなアプローチが適しているのでしょうか? 無効化オプションはありますか? それ以外のオプションは何ですか?

ありがとう!

//MrW

編集:私はこれをやろうとしました:

$('#drpSortColumn1 option[value=' + val + ']').hide();

しかし、それはうまくいかないようです。オプションを非表示にすることが単に不可能なのか、それとも間違っているのかはわかりません。

4

3 に答える 3

1

変化する:

$('#drpSortColumn1 option[value=' + val + ']').hide();
$('#drpSortColumn1 option[value=' + val + ']').show();

に:

$('#drpSortColumn1 option[value=' + val + ']').attr('disabled','disabled');
$('#drpSortColumn1 option[value=' + val + ']').attr('disabled','');

また:

$('#drpSortColumn1 option[value=' + val + ']').attr('disabled',true);
$('#drpSortColumn1 option[value=' + val + ']').attr('disabled',false);
于 2010-06-28T11:49:52.127 に答える
0

ここを見てください、私はそれがあなたが探しているものだと思います: jQueryは、選択されたラジオに基づいてSELECTオプションを無効にします(すべてのブラウザのサポートが必要です)

あなたはあなた自身の注文を持つことができます、ただ正しい条件を作るだけです、そして私はそれが支配するべきだと思います;)

乾杯^^

編集:OK、あなたの場合はあまり便利ではないので、ここにいくつかのリードがあります:

  • 以下の CuSS で説明されているように、disabled 属性を使用してみてください。ただし、オプションが選択できなくなっても、オプションが非表示にならないという大きな欠点があります。オプションの Display:none は、私が覚えている FF でのみ機能します。

  • 多くのコードを書く準備ができている場合は、フィールドに影響を与えてフィールドを削除および追加して、次のような順序を記憶することができます。

    ... ...など...

同じ選択を 2 回行う必要があります。1 つは display:none div にあり、すべてのオプションを含む「デフォルト」の選択であり、操作しません。

次に、オプションを非表示にする場合は、最初の選択で削除できます。元に戻したい場合は、2 つのパラメーターを使用して関数挿入オプションを作成します。 ) 挿入します (配列が最適と思われます)。

次に、選択したものを正しい選択の適切な場所に複製します。これでうまくいくはずです。少なくとも、常に再作成したくない場合は、それが唯一の解決策であり、正しい順序を維持します。これが不明確な場合は教えてください。これが役立つことを願っています;)

于 2010-06-28T08:44:57.977 に答える
0

私はこれをやってしまった:

$(document).ready(function() {
    $('.Fields input[type=checkbox]:checked').click(function() {

        $('#drpSortColumn1').children().remove();

        jQuery.each(fields, function(val, name) {
            $('#drpSortColumn1').append('<option value="' + val + '">' + name + '</option>')
        });

        $('.Fields input:checkbox:not(:checked)').each(function() {
            $('#drpSortColumn1 option[value=' + $(this).val() + ']').remove();
        });
    })
});

そのため、すべての元のフィールドを含む Json オブジェクトを保存し、チェックボックスをクリックするたびに、ドロップダウンからすべてのアイテムを削除し、すべてのアイテムを再生成します。次に、どのチェックボックスがチェックされていないかに応じて、ドロップダウンから値を削除します。

于 2010-06-28T13:35:48.470 に答える