我有一个典型的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>
答案 0 :(得分:78)
试试这个:
<%= Html.TextBoxFor(
model => model.date,
new { @class = "aDatePicker", autocomplete = "off" }
)%>
它将生成接近以下内容的标记:
<input type="text" id="date" name="date" class="aDatePicker" autocomplete="off" />
答案 1 :(得分:17)
几点意见
如果您或多或少已经写过该网站,并且您不想返回并修改所有cshtml以禁用自动填充功能(我们将不得不返回并更改数百个整个站点的代码行),您可以通过Javascript使用就绪处理程序禁用它,如下所示:
//Disable autocomplete throughout the site
$(document).ready(function() {
$("input:text,form").attr("autocomplete","off");
})
根据我的阅读,您需要在表单和文本框级别禁用它,以便它可以在所有版本的Firefox和IE上运行。
答案 2 :(得分: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")
}
}
答案 3 :(得分:0)
使用自动填充=“关闭”
Html.BeginForm("ValidateLogin", "Login", FormMethod.Post, htmlAttributes: new { id = "submitForm", autocomplete = "off" })
答案 4 :(得分:0)
我对此感到沮丧有一段时间了。记住登录字段存在安全风险。特别是当用户离开屏幕时。
我的解决方案是
将登录按钮标记为禁用。
在 javascript/jquery ready 方法中,我放置了一个 500 毫秒的 setTimeout 函数,它 a - 清除密码文本框,例如$('#Password').val('') b - 启用登录按钮 loginFtns = 函数(){ var那个[]; 这是一个包含方法的命名空间函数 that.clearPassword = function() { $('#Password').val(''); $('#LoginBtn').prop('disabled', false); }; that.init = 函数(){ that.initEvents(); setTimeout(function() { that.clearPassword(); }, 500); }; 返回那个; }();
$().ready(function() {
loginFtns.init();
});