2017-01-15 13 views
0

Браузеры запоминают логин и пароль и предлагают автоматически вводить вводимые данные при создании и редактировании пользователя. Я хочу, чтобы он был включен только на странице входа. Установка autocomplete на off для всей формы и каждый вход не помогает. Я изменил тип ввода пароля на text и изменил его на password, используя JavaScript после загрузки страницы, но это также не помогает. Кажется, что не имеет значения, что значения name и id атрибутов - он всегда предлагает заполнить логин и пароль для каждого элемента <input type="password" /> с одним предшествующим ему элементом <input type="text" />.Как отключить автозаполнение логина и пароля браузером при создании и редактировании пользовательских страниц?

Это фрагмент моего кода в целях Бритва для создания нового пользователя (ниже также обычный HTML):

<div class="form-group"> 
    @Html.LabelFor(model => model.Email, new { @class = "control-label col-sm-3" }) 
    <div class="col-sm-8"> 
     @Html.TextBoxFor(model => model.Email, new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" }) 
    </div> 
</div> 

<div class="form-group"> 
    @Html.LabelFor(model => model.Password, new { @class = "control-label col-sm-3" }) 
    <div class="col-sm-8"> 
     @Html.PasswordFor(model => model.Password, new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" }) 
    </div> 
</div> 

<div class="form-group"> 
    @Html.LabelFor(model => model.ConfirmPassword, new { @class = "control-label col-sm-3" }) 
    <div class="col-sm-8"> 
     @Html.PasswordFor(model => model.ConfirmPassword, new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.ConfirmPassword, "", new { @class = "text-danger" }) 
    </div> 
</div> 

Тот же код с ASP.NET MVC хелперов преобразованы в HTML:

<div class="form-group"> 
    <label class="control-label col-sm-3" for="Email">Email address</label> 
    <div class="col-sm-8"> 
     <input class="form-control" data-val="true" data-val-email="The Email address field is not a valid e-mail address." data-val-required="The Email address field is required." id="Email" name="Email" type="text" value="" /> 
     <span class="field-validation-valid text-danger" data-valmsg-for="Email" data-valmsg-replace="true"></span> 
    </div> 
</div> 
<div class="form-group"> 
    <label class="control-label col-sm-3" for="Password">Password</label> 
    <div class="col-sm-8"> 
     <input class="form-control" data-val="true" data-val-length="The Password must be at least 6 characters long." data-val-length-max="100" data-val-length-min="6" data-val-required="The Password field is required." id="Password" name="Password" type="password" /> 
     <span class="field-validation-valid text-danger" data-valmsg-for="Password" data-valmsg-replace="true"></span> 
    </div> 
</div> 
<div class="form-group"> 
    <label class="control-label col-sm-3" for="ConfirmPassword">Confirm password</label> 
    <div class="col-sm-8"> 
     <input class="form-control" data-val="true" data-val-equalto="The password and confirmation password do not match." data-val-equalto-other="*.Password" data-val-required="The Confirm password field is required." id="ConfirmPassword" name="ConfirmPassword" type="password" /> 
     <span class="field-validation-valid text-danger" data-valmsg-for="ConfirmPassword" data-valmsg-replace="true"></span> 
    </div> 
</div> 

ответ

0

я вставил поддельные input элемент без id и name между input элементами логин и пароль:

<input type="text" class="fakeInputToDisableCredentialsAutocomplete" /> 

Я не могу скрыть это с установкой display атрибут none. Он должен иметь значение visibility, установленное на hidden и position значение, установленное на absolute, чтобы предотвратить смещение некоторых других элементов.

.fakeInputToDisableCredentialsAutocomplete{ 
    position: absolute; 
    visibility: hidden; 
} 

Он также решает проблему ввода с подтверждением пароля, но я положил его перед каждым input с type="password" на всякий случай. Я тестировал его в Google Chrome, Internet Explorer 11 и Microsoft Edge.

+0

Прежде чем я приму свой ответ, я подожду более элегантного решения. –

0

Есть 2 решения для него:

  1. Вставить скрытое поле ввода поддельного между именем пользователем и паролем
  2. Split Имени пользователя и паролем на 2 страницы

для поддельного скрытого поля ввода, Он работает для IE, Chrome, Firefox. Но не работайте для Safari