2010-06-10 66 views
33

我有一个典型的ADO.NET EF驱动窗体,允许用户输入日期。我在上面放了一个jQuery日期选择器,但是当用户选择一个日期时,浏览器会在下拉列表中显示一些其他条目。如何关闭该下拉菜单?在传统的ASP.NET中,我会把autocomplete =“off”。不确定MVC的等价物。如何在MVC Html Helper中禁用自动完成功能

<div class="editor-field"> 
    <%= Html.TextBoxFor(model => model.date, new { @class = "aDatePicker" })%> 
    <%= Html.ValidationMessageFor(model => model.date) %> 
</div> 

回答

61

试试这个:

<%= Html.TextBoxFor(
    model => model.date, 
    new { @class = "aDatePicker", autocomplete = "off" } 
)%> 

它会生成标记接近于以下内容:

<input type="text" id="date" name="date" class="aDatePicker" autocomplete="off" /> 
0

我用Darin的上方,并成功地应用它来演示:

@model RequestAQuote.Models.RequestAQuoteModel 
    @{ 
     ViewBag.Title = "Request a Free Quote"; 
     List<string> ProjectTypes = new List<string>(); 
     ProjectTypes.Add("Electrical Wiring"); 
     ProjectTypes.Add("Install Breakers"); 
     ProjectTypes.Add("Ceiling Fan"); 
     ProjectTypes.Add("Replace Light"); 
     ProjectTypes.Add("Replace Outlet");  
    } 

    <h2>Request A Quote</h2> 
    @using (Html.BeginForm()) 
    { 
     @Html.ValidationSummary() 
     <fieldset> 
      <legend>Request a Quote Form</legend> 
      <ol> 
       <li> 
        @Html.LabelFor(m => m.ProjectType) 
        @Html.DropDownListFor(m => m.ProjectType, new MultiSelectList(ProjectTypes)) 
       </li> 
       <li> 
        @Html.LabelFor(m => m.ContactName) 
        @Html.EditorFor(m => m.ContactName, new { autocomplete = "off" }) 
       </li> 
       <li> 
        @Html.LabelFor(m => m.DaTimePhone) 
        @Html.EditorFor(m => m.DaTimePhone, new { autocomplete = "off" }) 
       </li> 
       <li> 
        @Html.LabelFor(m => m.Email) 
        @Html.EditorFor(m => m.Email, new { autocomplete = "off" }) 
       </li> 
       <li> 
        @Html.LabelFor(m => m.ProjectDescription) 
        @Html.EditorFor(m => m.ProjectDescription, new { autocomplete = "off" }) 
       </li> 
      </ol> 
      <input type="submit" value="Request Quote" /> 
     </fieldset> 
    } 

    @section scripts 
    { 
     @Scripts.Render("~/bundles/jqueryval") 
    } 

    } 
13

几点

  1. 如果你或多或少已经写好的网站,你不想回去修改所有CSHTML禁用自动完成(我们将不得不回去换几百行代码的整个网站),你可以通过JavaScript提供了现成的处理程序禁用它,就像这样:

    //Disable autocomplete throughout the site 
    $(document).ready(function() { 
        $("input:text,form").attr("autocomplete","off"); 
    }) 
    
  2. 从我读过你需要的形式和它在顺序文本框中水平来禁用它在所有版本的Firefox和IE上工作。

+0

您的脚本很棒! – Kbdavis07 2014-05-14 03:50:40