Как отключить автозаполнение в MVC Html Helper
У меня типичная форма ADO.NET EF, которая позволяет пользователю вводить дату. Я поставил jQuery datepicker на него, но когда пользователь переходит к выбору даты, браузер показывает некоторые другие записи в выпадающем списке. Как отключить это раскрывающееся меню? В традиционном ASP.NET я бы поставил autocomplete = "off". Не уверен в эквиваленте MVC.
<div class="editor-field">
<%= Html.TextBoxFor(model => model.date, new { @class = "aDatePicker" })%>
<%= Html.ValidationMessageFor(model => model.date) %>
</div>
Ответы
Ответ 1
Попробуйте следующее:
<%= Html.TextBoxFor(
model => model.date,
new { @class = "aDatePicker", autocomplete = "off" }
)%>
Он создаст разметку, близкую к следующему:
<input type="text" id="date" name="date" class="aDatePicker" autocomplete="off" />
Ответ 2
Несколько пунктов
-
Если вы более или менее уже написали сайт, и вы не хотите возвращаться и изменять весь свой cshtml, чтобы отключить автозаполнение (нам пришлось бы вернуться и изменить сотни строк кода в течение сайт), вы можете отключить его с помощью Javascript с готовым обработчиком, например:
//Disable autocomplete throughout the site
$(document).ready(function() {
$("input:text,form").attr("autocomplete","off");
})
-
Из того, что я прочитал, вам нужно отключить его как на уровне формы, так и на уровне текстового поля, чтобы он работал на всех версиях Firefox и IE.
Ответ 3
Я использовал Дарина выше и успешно применил его к демо:
@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")
}
}