Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как открыть текст в инпуте с type=password? (https://javascript.ru/forum/events/32153-kak-otkryt-tekst-v-inpute-s-type%3Dpassword.html)

Kotakota 05.10.2012 07:13

Как открыть текст в инпуте с type=password?
 
Привет.
Есть инпут:
<input type=password>

соответственно когда вводим текст в это поле, он маскируется символом: *
Как с помощью javascript показать текст закрытый звездочками в поле с "type=password"?
Пробовал динамически заменить type у инпута с password на text, но естественно это ничего не изменило.
Как можно осуществить задуманное или это вообще невозможно сделать?

bes 05.10.2012 08:01

не работает только в IE
подменять на input type="text" c value от input type="password"

Kotakota 05.10.2012 08:13

Почему то не работает такой код:
function ShowHidePassword(id) {
element = document.getElementById(id);
if element.type == 'password' {
element.type = 'text'
}
else {
element.type = 'password'
}
}

В HTML следующий код:
<input type="password" id="pid">
<a href="#" onclick="ShowHidePassword('pid')">

Текст введенный в поле не показывается. По прежнему остаются символы *

bes 05.10.2012 08:17

в IE только и не работает

lord2kim 05.10.2012 08:28

Kotakota,
<script>
function ShowHidePassword(id) {
element = document.getElementById(id);
if (element.type == 'password') {
/*element.type = 'text';
element.value = element.value;*/
var inp = document.createElement("input");
inp.id = id;
inp.type = "text";
inp.value = element.value;
//alert(inp.parentNode.tagName);
element.parentNode.replaceChild(inp, element);
}
else {
/*element.type = 'password';
element.value = element.value;*/
var inp = document.createElement("input");
inp.id = id;
inp.type = "password";
inp.value = element.value;
element.parentNode.replaceChild(inp, element);
}
}  
</script>
<input type="password" id="pid">
<a href="#" onclick="ShowHidePassword('pid')">click</a>

bes 05.10.2012 08:50

<input type="password">
<input style="display: none;">
<input type="button" value="show/hide">
<script>
window.onload = function () {
	function f(el1, el2) {
		el2.style.display  = 'inline';
		el1.style.display = 'none';
		el2.value = el1.value;
	}
	var els = document.body.children;
	els[2].onclick = function () {
		if (navigator.userAgent.indexOf('MSIE') != -1) {
			if (els[1].style.display != 'inline') {
				f(els[0], els[1]);
			} else {
				f(els[1], els[0])
			}
			return;
		}
		if (els[0].getAttribute('type') != 'text') {//
			els[0].setAttribute('type', 'text');
		} else {
			els[0].setAttribute('type', 'password');
		}
	}
}
</script>

либо через insertAdjacentHTML

Kotakota 05.10.2012 12:44

Благодарю за ответы!

Aetae 06.10.2012 04:09

Нахрена только мудрить с проверкой на ие - непонятно.

bes 06.10.2012 09:29

Цитата:

Сообщение от Aetae
Нахрена только мудрить с проверкой на ие - непонятно.

для понта ;) (шутка)
решение со сменой type всё же логичнее и проще и не подходит только для IE<9, поэтому основывать решение изначально на костыле имхо не гуд, потом только удалить кусок костыльного кода

Kotakota 06.10.2012 23:18

В конечном итоге с использованием JQuery получилось так:
<script language="Javascript">
function ShowHidePassword(id){
element = $('#'+id)
element.replaceWith(element.clone().attr('type',(element.attr('type') == 'password') ? 'text' : 'password'))
}
</script>

Leanidas 26.10.2014 01:05

Цитата:

Сообщение от bes (Сообщение 208492)
для понта ;) (шутка)
решение со сменой type всё же логичнее и проще и не подходит только для IE<9, поэтому основывать решение изначально на костыле имхо не гуд, потом только удалить кусок костыльного кода

Здравствуйте. А смотрите я хочу что бы место пароля у меня так же и остались *** но рядом была кнопка типо глазика при нажатии которой показывался бы пароль. Как это осуществить? помогите пожалуйста)

danik.js 26.10.2014 04:28

Если поддержка IE8 не нужна, то:
<!DOCTYPE html>
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" />
<style>
	input{
		vertical-align: middle;
		font-family: "Lucida Console", Monaco, monospace;
	}
	input::-ms-reveal,
	input::-ms-clear
	{
		display: none;
	}
	.password-reveal{
		border: none;
		padding: 0;
		width: 1.3em;
		height: 1.2em;
		margin-left: -1.9em;
		vertical-align: middle;
		background: none;
		color: #555;
		cursor: default;
	}
	.password-reveal:hover{
		color: #222;
	}
</style>
<span class="input-wrap">
	<input type="password" value="password" />
	<button tabindex="-1" aria-hidden="true" class="password-reveal" type="button"><span class="fa fa-eye"></span></button>
</span>
<script>
(function() {
	var eye = document.querySelector('.password-reveal');
	eye.onmousedown = function() {
		return false;
	};
	eye.onclick = function() {
		var input = this.previousElementSibling;
		var selection = {start: input.selectionStart, end: input.selectionEnd};
		input.type = {text: 'password', password: 'text'}[input.type];
		input.selectionEnd = selection.end;
		input.selectionStart = selection.start;
		return false;
	};
})();
</script>

bes 26.10.2014 09:31

Цитата:

Сообщение от Leanidas
Здравствуйте. А смотрите я хочу что бы место пароля у меня так же и остались *** но рядом была кнопка типо глазика при нажатии которой показывался бы пароль. Как это осуществить? помогите пожалуйста)

проблема в том, чтобы приделать глаз вместо кнопки что ли? :)

<style>
img {
	position: relative;
	width: 1em;
	height: 1em;
	top: 0.2em;
	left: -1.5em;
	z-index: 100;
}
</style>
<input type="password" value="something wrong">
<img src="http://www.wordassociations.ru/image/600x/svg_to_png/Anonymous_eye.png">
<script>
(function () {
	var input = document.querySelector("input");
	document.querySelector("img").addEventListener("click", function () {
		if (input.getAttribute('type') != 'text') {
			input.setAttribute('type', 'text');
		} else {
			input.setAttribute('type', 'password');
		}
	});
})();
</script>

danik.js 26.10.2014 11:55

bes, а почему атрибуты вместо свойств?
Кстати, заметил, что map выглядит выразительней, чем тернарный оператор:

input.type = {text: 'password', password: 'text'}[input.type];



input.type = input.type == 'text' ? 'password' : 'text';


Или мне одному так кажется?

рони 26.10.2014 12:38

danik.js,
мысли вслух ...
input.type = input.type != 'text' ? 'text':'password' ;
с "неравно" конструкция надёжнее и сработает например при смене стиля display по умолчанию
или придётся добавить ещё '' : 'none'
и вариант использования )))
<style>
    span {
        cursor: pointer;
    }
</style>
<span class="test"></span>
<script>
    (function() {
        function wordReplace(elem, first, last) {
            var word = {};
            word[first] = last;
            word[last] = first;
            elem.innerHTML = first;
            elem.onclick = function() {
                elem.innerHTML = word[elem.innerHTML]
            }
        }
        var test = document.querySelector('.test');
        wordReplace(test, 'первый', 'второй')
    })();
</script>

bes 26.10.2014 12:56

Цитата:

Сообщение от danik.js
bes, а почему атрибуты вместо свойств?

вероятно пережитки прошлого

ещё более вероятно, что отстал в развитии, так как не понял на основе чего ты это провернул
Цитата:

Сообщение от danik.js
input.type = {text: 'password', password: 'text'}[input.type];


danik.js 26.10.2014 13:17

Ну в IE8 этот код в любом случае не работает ) Ну а насчет Chrome надеюсь ошиблись. Иначе это печально.
Цитата:

Сообщение от bes
что отстал в развитии

Боюсь это деградация ) Это же ассоциативный массив, тут же получаем свойство по ключу.

Или в чем проблема? Кажется способ не очень выразительный )

bes 26.10.2014 13:17

Цитата:

Сообщение от bes
ещё более вероятно, что отстал в развитии, так как не понял на основе чего ты это провернул

сорри, здесь просто тупанул, всё понятно :)

bes 26.10.2014 13:24

Цитата:

Сообщение от danik.js
Боюсь это деградация ) Это же ассоциативный массив, тут же получаем свойство по ключу.

Или в чем проблема? Кажется способ не очень выразительный )

lf-lf да-да, это деградация
причём сбил с толку
Цитата:

Сообщение от danik.js
что map

и начал искать особый смысл :D

Leanidas 26.10.2014 14:00

Цитата:

Сообщение от bes (Сообщение 337619)
проблема в том, чтобы приделать глаз вместо кнопки что ли? :)

<style>
img {
	position: relative;
	width: 1em;
	height: 1em;
	top: 0.2em;
	left: -1.5em;
	z-index: 100;
}
</style>
<input type="password" value="something wrong">
<img src="http://www.wordassociations.ru/image/600x/svg_to_png/Anonymous_eye.png">
<script>
(function () {
	var input = document.querySelector("input");
	document.querySelector("img").addEventListener("click", function () {
		if (input.getAttribute('type') != 'text') {
			input.setAttribute('type', 'text');
		} else {
			input.setAttribute('type', 'password');
		}
	});
})();
</script>

Блин наверно глупые вопросы)) а каких файлах это писать и где что Что бы вот тут где у меня регистрация рядом с полем пароль появился глаз или кнопочка при нажатии которой просматривать пароль. http://mb.msk0.ru/index.php?route=ac...simpleregister

bes 26.10.2014 14:10

Цитата:

Сообщение от Leanidas (Сообщение 337645)
Блин наверно глупые вопросы)) а каких файлах это писать и где что Что бы вот тут где у меня регистрация рядом с полем пароль появился глаз или кнопочка при нажатии которой просматривать пароль. http://mb.msk0.ru/index.php?route=ac...simpleregister

очевидно, в файлах с расширением .html, .css и .js соответственно

kostyanet 26.10.2014 18:12

Ну вы запарились!

Пожизненно вот так делаю

onkeyup('{this.title=this.value}')


и все довольны до опупения. Подвел мышь - посмотрел (пока никто не видит), убрал мышь - никто не видит.

Для мобильных предлагаю просто давать вводить без буллетов и все.

Leanidas 10.11.2014 02:04

Так в личку мне и не отвечают=( напишу сюда.
У меня в файле вот такой код там:
<tr>
                <td class="simplecheckout-login-left"><?php echo $entry_password; ?></td>
                <td class="simplecheckout-login-right"><input type="password" name="password" value="" /></td>
            </tr>


Что мне в нем поменять получается?

danik.js 10.11.2014 03:07

Leanidas, в html вставляй кнопку глаза, в css - стили для глаза, в js - код для глаза.
Все это бери отсюда: #12

Только не тяни весть font-awesome ради одной иконки.

Leanidas 10.11.2014 15:01

Все настроил!! Всем спасибо большое!!
А еще последний вопрос как сделать так что бы глаз у меня был на уровне слова поля и с правой стороны - вот моя страница регистрации -
http://unikross.ru/index.php?route=a...simpleregister

Deff 10.11.2014 16:01

для ИЕ
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
   <style>body {} </style>
</head>
<body>

<form>
<input type="password" id="fld4" name="pass" size="50" maxlength="80" />
</form>
<input id="a" type="button" class="button" value="Посмотреть" onclick="pas()" />
<script>
   $("#a").click(function () {
      var frm = $('form:first');
      alert(frm.serializeArray()[0].value);
   });
 </script>
</body>
</html>

danik.js 10.11.2014 16:55

WTF???

Deff, ты где пропадал? Лечился? Кажется недолечился..

danik.js 10.11.2014 16:55

Цитата:

Сообщение от Deff
jquery/1.4.4

Некрофил чели?

Deff 10.11.2014 17:17

danik.js,
Болел, родственников с Киева вывозил, потом в ополчении бодался(точнее топталсо в окружении замов стрелка, узнавал что-почем и к чему движемся.. потом послал всё нах, ибо там масса интересов, далёких от чаяний после Крыма)

DimonFreeman 19.04.2017 13:00

А как сделать если два паса?
и нужно что б переводило в text сразу два поля?


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