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

为什么是 JavaScript?当您可以在服务器端使用条件并且如果没有任何要渲染的元素时甚至不渲染 ddl 时,似乎完全浪费了带宽:

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

这应该在纯 JavaScript 中完成这项工作:

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

jsFiddle

于 2012-06-26T21:18:52.040 回答
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 回答