2012-04-24 45 views
1

我之前实现过选择,但我遇到了一个问题,试图让它在MVC 3中工作。我不知道是什么导致了这一点,但元素渲染非常狭窄,我有不知道为什么。我已经看遍了所有,我无法弄清楚这一点,我觉得我正在服用疯狂的药丸!谢谢!jQuery选择的插件没有正确的样式。很小

Here is a screenshot

这里是我的代码:

CSHTML:

div id="ProducerData" style="display: none;"> 
       <h2> 
        Winery Information</h2> 

       @Html.DropDownListFor(m => m.Producer.ProducerID, new SelectList(Model.Producers, "ProducerID", "Name"), "Please select a producer") 
       <input type="button" id="btnNewProdcue" value="New Producer?" onclick="NewProducer(); return false;" /> 
       <table id="ProducerDataTable"> 

JS:

$(document).ready(function() { 

     SlideWidth = 650; 
     SlideSpeed = 500; 
     InitTab(); 


     $("#ProducerDataTable input[type=text]").addClass("DisabledTextInput"); 
     $("#ProducerDataTable input[type=text]").attr("disabled", true); 

     $("#Producer_ProducerID").change(OnProducerChange); 
     $("#UserTypes img").click(OnUserTypeClick); 
     $("#UserObj_Country").change(OnCountryChange); 
     $(".state").change(OnStateChange); 
     SetNavigationDisplay(); 
     $("#UserObj_Phone").live("keypress", function (e) { 
      if (e.which === 0) { 
       e.preventDefault(); 
      } 
     }); 

     $("#Producer_ProducerID").chosen(); 
    }); 
+0

css在你网站上的其他地方瞎搞着它,使用像萤火虫或铬调试器的网页开发工具栏,可以显示一个元素的所有应用样式来追踪它。 – asawyer 2012-04-24 17:45:51

+0

是的,我一直在这样做,但我不知道它应该是什么样子。至少现在我知道要把重点放在哪里。 – user576838 2012-04-24 17:59:14

+1

我注意到,在线元素造型宽度由于某种原因被设置为0。有谁知道它是否事先隐藏可能导致这个错误或什么?编辑:这是它 - 修好了! – user576838 2012-04-24 20:22:20

回答

2

我以前碰到这个问题。那display: none;"风格是问题所在。您应该从div中移除它,因为在页面呈现时,选择忽略其中未显示的元素。因此它不会产生应有的东西。尝试在页面加载后隐藏该元素。

+0

是的,隐藏的元素会导致Chosen设置宽度的内联样式:0。 – 2014-01-21 18:36:54

3

var opts = {}; 
if (!$("#Producer_ProducerID").is(':visible')) { 
    opts["width"] = 'auto'; 
} 
$("#Producer_ProducerID").chosen(opts); 
+1

这对我来说是正确的答案,因为我想保持UI隐藏,直到完成初始化,以获得更清晰的用户体验。 – bojingo 2014-05-14 13:57:55

0

更换

$("#Producer_ProducerID").chosen(); 

在我的情况,我在chosen.css文件中删除display: inline-block;.chosen-container和解决的问题。

相关问题