Это то, что я сделал, принимая биты от чужих вещей.
$(document).ready(function () {
if (document.all) {
$('#<%=cboDisability.ClientID %>').mousedown(function () {
$('#<%=cboDisability.ClientID %>').css({ 'width': 'auto' });
});
$('#<%=cboDisability.ClientID %>').blur(function () {
$(this).css({ 'width': '208px' });
});
$('#<%=cboDisability.ClientID %>').change(function () {
$('#<%=cboDisability.ClientID %>').css({ 'width': '208px' });
});
$('#<%=cboEthnicity.ClientID %>').mousedown(function () {
$('#<%=cboEthnicity.ClientID %>').css({ 'width': 'auto' });
});
$('#<%=cboEthnicity.ClientID %>').blur(function () {
$(this).css({ 'width': '208px' });
});
$('#<%=cboEthnicity.ClientID %>').change(function () {
$('#<%=cboEthnicity.ClientID %>').css({ 'width': '208px' });
});
}
});
где cboEthnicity и cboDisability - это раскрывающиеся списки с текстом параметра, который шире, чем ширина самого выбора.
Как видите, я указал document.all, так как это работает только в IE. Кроме того, я включил выпадающие элементы в элементы div следующим образом:
<div id="dvEthnicity" style="width: 208px; overflow: hidden; position: relative; float: right;"><asp:DropDownList CssClass="select" ID="cboEthnicity" runat="server" DataTextField="description" DataValueField="id" Width="200px"></asp:DropDownList></div>
Это заботится о других элементах, перемещающихся не на своем месте, когда ваш раскрывающийся список расширяется. Единственным недостатком здесь является то, что визуальный список менулиста исчезает, когда вы выбираете, но возвращается, как только вы выбрали.
Надеюсь, это кому-нибудь поможет.