Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Динамическое поле для ввода пароля в форме авторизации (https://javascript.ru/forum/dom-window/11570-dinamicheskoe-pole-dlya-vvoda-parolya-v-forme-avtorizacii.html)

dimiork 31.08.2010 22:24

Динамическое поле для ввода пароля в форме авторизации
 
Доброго времени суток! У меня есть код:
$('#user_input').change(function() { if ($(this).val() == 'user') $('#pass_input').show(); });



цель - получить динамическое поле для ввода пароля в форме.
На странице авторизации есть форма с одним единственным полем Логин. Затем пользователь вводит Логин и, если это логин совпадает с задуманным ['user'] то JS делает видимой второе поле формы для ввода пароля, в противном случае вылезет какой-нибудь document.writ() и уведомит что неверный логин.

Код сверху мне подсказал один хороший человек, но как прикрутить его к HTML форме я не знаю. Поэтому буду рад любой помощи!

UPD: ничего страшного же: document.write("<b>Неверый логин</b>");
да и это не суть важно. Интересует лишь как реализовать данную идею с динамическим (hide/show) полем пароля. Благодарю.
Предвижу замечания о том, что это не решает вопроса безопасности сообщаю, что это лишь форма(обертка) к полноценному скрипту авторизации.

Gozar 31.08.2010 22:44

Цитата:

Сообщение от dimiork (Сообщение 69337)
вылезет какой-нибудь document.writ() и уведомит что неверный логин.

Выглядит устрашающе, я уже боюсь.

monolithed 31.08.2010 23:24

Цитата:

Сообщение от Gozar (Сообщение 69340)
Выглядит устрашающе, я уже боюсь.

Действительно:lol:


<input type="text" id="user" value="" />
<input type="text" id="pass" value="" />


На выбор два варианта:

JavaScript "как есть":
window.onload = function(){
	var password = document.getElementById('pass');
	password.style.display = 'none';
	document.getElementById('user').onchange = function(){	
		password.style.display = (this.value == 'admin') ? 'block' : 'none';
	};
};


jQuery:
$(document).ready(function(){
	$('#user').change(function(){
		if($(this).val() == 'admin'){
			$('#pass').show();
		}
	});
});



А вообще, этот код далеко не полный т.к. такие действия требуют приминения AJAX и как минимум знаний серверной части...

inGray 01.09.2010 09:24

Хороший способ снизить безопасность паролей )) Была двухфакторная аутентификация, а стала какая-то не такая :blink:

Paguo-86PK 02.09.2010 00:57

Как-то здесь уже мелькало
 
Уже как-то моё подобное предложение здесь высмеяли. Теперь вижу, не один я такой...
Но в целом, Ваш вопрос очень интересен. Надо будет на досуге попробовать...

MadGest 02.09.2010 09:36

Да без ajax тут никак. Предлагаю такой вариант. Предварительно создать элемент для ввода пароля и установить ему hide. По событию keyup для поля ввода, при помощи ajax посылать строку Login скрипту который будет проверять её по базе данных если такой логин будет найден то ajax вернет например 1. А в функцию обработки удачного запроса кинуть функцию которая при 1 покажет элемент ввода пароля, а при 0 строку "Логин не найден". Удобнее будет сделать на jQuery. (PS. Лично мое мнение)

inGray 02.09.2010 09:43

Я все-таки хочу от автора услышать ответ, зачем ему упрощать подбор паролей в разы? При стандартном подходе мы имеет произведение вариантов, а при таком сумму. :blink:

MadGest 02.09.2010 10:35

Лови....

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script>
jQuery.noConflict();
jQuery(document).ready(function($){
		
	//Начало JQuery функций ----------------
	$('#password').hide();  //изначально скрывает поле ввода пароля

			$("#login").keyup(function(){ 
					var login = $("#login").attr('value'); 					
					$('#password').hide();
					
						if (login == "admin")
						{  
							$("#password").show();
							$('#error').hide();						
							
						}else
						{	
							$("#password").hide; $('#error').html("Неверый логин"); 									
						}
			}); 
	});
</script>


<input type="text" id="login" name="lodin" size="20">
<input type="text" id="password" name="password" size="20">

<div id="error">
</div>


Часовой пояс GMT +3, время: 04:20.