2013-09-04 1 views
1

У меня есть веб-приложение, где у меня есть простой ящик для входа. Форма отправки не существует, и процедура входа в систему реализована через jQuery AJAX.Как включить запоминание пароля в случае входа AJAX?

В таком случае, как я могу заставить веб-браузер отобразить «Вы хотите, чтобы браузер запоминал пароль?» диалог?

Заранее благодарен!

ПРИМЕЧАНИЕ: Я ищу решение, которое работает по крайней мере в самой последней версии всех основных браузеров.

EDIT: Я использую файлы cookie для запоминания имени пользователя. Проблема в том, что браузеры не предлагают запомнить пароль.

Вот HTML:

<div class="window loginWindow sn-login"> 
    <div> 
     <input type="text" id="UserName" placeholder='Username' /> 
    </div> 
    <div> 
     <input type="password" id="Password" placeholder='Password' /> 
    </div> 
    <div> 
     <div> 
      <input type="checkbox" id="RememberMe" /> 
      <label for="RememberMe">Remember my login</label> 
     </div> 
     <div> 
      <button class="loginSubmit">Login</button> 
     </div> 
    </div> 
</div> 

Вот JavaScript:

var $userName = $("#UserName"), 
    $rememberMe = $("#RememberMe"), 
    $password = $("#Password"); 

var name = $userName.val(), pw = $password.val(); 
$.ajax({ 
    type: "POST", 
    url: "/UserActions/LogIn", 
    dataType: "json", 
    data: { password: pw, email: name }, 
    success: function (data) { 
     if (data.success) { 
      if ($rememberMe.is(":checked")) { 
       // Omitted for brevity 
      } 

      window.location.reload(); 
     } 
     else { 
      // Omitted for brevity 
     } 
    } 
}); 
+0

что вы имеете в виду - не форме представить? –

+0

C o o k i e s ... – Virus721

+0

используйте файлы cookie, как указано в комментарии выше, или localstorage с polyfill для старых браузеров –

ответ

2

Просто создайте элемент формы как оболочку для своих элементов управления и используйте обработчик отправки формы для выполнения вызова ajax, как вы это делаете.

<form id="myform"> 
<div class="window loginWindow sn-login"> 
    <div> 
     <input type="text" id="UserName" placeholder='Username' /> 
    </div> 
    <div> 
     <input type="password" id="Password" placeholder='Password' /> 
    </div> 
    <div> 
     <div> 
      <input type="checkbox" id="RememberMe" /> 
      <label for="RememberMe">Remember my login</label> 
     </div> 
     <div> 
      <button class="loginSubmit">Login</button> 
     </div> 
    </div> 
</div> 
</form> 

Измените сценарий так:

$('.loginSubmit').on('click', function(){ 

$("#myform").submit(function(){ 


var $userName = $("#UserName"), 
    $rememberMe = $("#RememberMe"), 
    $password = $("#Password"); 

var name = $userName.val(), pw = $password.val(); 
$.ajax({ 
    type: "POST", 
    url: "/UserActions/LogIn", 
    dataType: "json", 
    data: { password: pw, email: name }, 
    success: function (data) { 
     if (data.success) { 
      if ($rememberMe.is(":checked")) { 
       // Omitted for brevity 
      } 

      window.location.reload(); 
     } 
     else { 
      // Omitted for brevity 
     } 
    } 
}); 
return false; 
}); 

}); 
+0

может быть некоторая проблема с фигурными скобками, так как я сам написал код здесь не в какой-либо среде. –

+0

Спасибо за ваш ответ! – Venemo

+0

@ Venemo это не сработало для u? –

0

Используйте форму, чтобы вызвать браузер встроенный в опции «запомнить пароль», но установить submit мероприятие он отменяет событие по умолчанию и вместо этого обрабатывает ваш вход в AJAX.

+0

«запустить» - как именно? В настоящее время браузеры сложны, они не отображают запоминающее поле для пароля только потому, что вы отправляете форму и затем отменяете ее. – JustAMartin

+0

Я уверен, что они это делают, если вы правильно слушаете событие 'submit' и обрабатываете его соответствующим образом ... –

Смежные вопросы