1

我正在使用来自http://harvesthq.github.io/chosen/的插件进行选择。在准备好文档时,我向它添加了一个空选项,然后调用 selected,但是它永远不会呈现数据占位符中定义的消息。我究竟做错了什么?我正在使用 asp.net webforms,并且下拉列表绑定在服务器上。下面是我的标记和我的 javascript

<asp:DropDownList ID="cbxLanguage" data-placeholder="choose a language..." CssClass="input-large chzn-select" DataTextField="Name" DataValueField="Id" runat="server" Width="210" required="Language required"></asp:DropDownList>

以及我在文档准备就绪时调用的javascript:

function pimpSelect(select, options) {
            var prepend = '';
            if (select.attr('data-placeholder')) {
                prepend = '<option></option>';
            }
            if (options) {
                options = prepend + options;
                select.empty().html(options);
            }
            else {
                select.prepend(prepend);
            }
            if (select.hasClass('chzn-select')) {
                var _width = select.css('width');
               select.chosen({ width: _width });
            }
        }
4

3 回答 3

9

原因是您应该首先初始化一个空值选项

<option value=""></option>

你的选择应该是这样的。

<select name="cbxLanguage" id="ContentPlaceHolder1_cbxLanguage" class="chzn-select" data-placeholder="choose a language..." required="Language required" style="width: 210px;">
  <option value=""></option>
  <option value="1">English</option>
  <option value="2">French</option>
  <option value="3">Spanish</option>
</select>

我不确定原因,但是如果您查看那里的chosen.js示例,您可以找到它。

JSFIDDLE

于 2013-06-07T04:51:15.583 回答
1

我有同样的问题,我做了以下事情:

当您初始化所选字段时,您必须不使用宽度大小的 % 。

$(".chosen").chosen({
    'no_results_text' :'Oops, nothing found!',
    'width'           :'700px',
    'search_contains' : true,
    'placeholder_text_multiple':'Please choose something ...',
    'display_selected_options':false             
 });
于 2015-04-09T16:06:37.830 回答
0

您正在使用服务器端 ASP.NET 控件。它的属性不会(必然)一对一地转换为渲染后最终在客户端的属性。

您需要在代码中执行此操作:

cbxLanguage.Attributes.Add("data-placeholder","choose a language...")
于 2013-06-04T20:19:00.010 回答