0

現在、ページの読み込み時に値が入力されるドロップダウン リストがありますが、ドロップダウン リストに何も含まれず、空の場合があります。リストにアイテムがないときはいつでもドロップダウンリストを非表示にしたいと思います。私はjavascriptを介してこれを行うことができると思っていましたが、javascriptを追加した後もページに表示されるため、何が間違っているのかわかりません。

ドロップダウン選択:

<select data-bind="options: endReason() ? endReason().SubReasons : [], value: subReasonId, optionsText: 'Text', optionsValue: 'Value', visible: isChecked"
                            name="subReasons">
                        </select>

これは私のJavascriptです:

<script type="text/javascript"> 
function OnClientDropDownOpening(sender, eventArgs) 
{   var combo = $find("<%= subReasons %>"); 
    items = combo.get_items(); 
    if(items.get_count()==0) 
    { 
         eventArgs.set_cancel(true); 
    } 
} 
</script> 
4

3 に答える 3

5

なぜジャバスクリプト?サーバー側で条件を使用でき、レンダリングする要素がない場合は ddl をレンダリングすることさえできない場合、帯域幅を完全に浪費しているようです。

@if (Model.Items.Count() > 0)
{
    @Html.DropDownListFor(x => x.SelectedItemId, Model.Items)
}
于 2012-06-26T21:15:12.997 に答える
0

以下では、jQuery ライブラリを含める必要があります。

<script type="text/javascript">
$().ready(function () {
    if ($('select[name=subReasons]').length == 0)
        $('select[name=subReasons]').remove();
});
</script>
于 2012-06-26T21:18:11.720 に答える
0

これは、純粋な JavaScript での仕事を行う必要があります。

var select = document.getElementById("select");
var options = select.getElementsByTagName("option");
document.write('Select has ' + options.length + ' options');​

jsフィドル

于 2012-06-26T21:18:52.040 に答える