Когда пользователь нажимает кнопку "Показать ссылку", отображает пароль, скрывает его при повторном нажатии
Я пытаюсь заставить этот простой script работать. В основном, когда пользователь нажимает ссылку "Показать", он отображает пароль в текстовом поле пароля и скрывает его при повторном нажатии. Я искал решения, но не мог найти ничего, что мне нужно. Вот код:
JavaScript
function toggle_password(target){
var tag = getElementById(target);
var tag2 = getElementById("showhide");
if (tag2.innerHTML == 'Show'){
tag.setAttribute('type', 'text');
tag2.innerHTML = 'Hide';
}
else{
tag.setAttribute('type', 'password');
tag2.innerHTML = 'Show';
}
}
HTML
<label for="pwd0">Password:</label>
<input type="password" value="####" name="password" id="pwd0" />
<a href="#" onclick="toggle_password('pwd0');" id="showhide">Show</a>
Когда я нажимаю ссылку, ничего не происходит. Я тестировал это без использования инструкции if и ничего не делал.
Ответы
Ответ 1
вы не использовали document
on для getElementById
function toggle_password(target){
var d = document;
var tag = d.getElementById(target);
var tag2 = d.getElementById("showhide");
if (tag2.innerHTML == 'Show'){
tag.setAttribute('type', 'text');
tag2.innerHTML = 'Hide';
} else {
tag.setAttribute('type', 'password');
tag2.innerHTML = 'Show';
}
}
ваши имена id
являются незаконными и трудными для работы: pwd'.$x.'
у вас не может быть некоторых из этих символов.
Спецификация HTML 4.01 указывает, что маркеры ID должны начинаться с буквы ([A-Za-z]), за которой может следовать любое количество букв, цифр ([0-9]), дефис (-), подчеркивание (_), colons (:) и периоды (.).
также этот метод не будет работать во всех браузерах, в IE < 9, например, вы можете изменить только .type
, прежде чем элемент будет прикреплен к документу
попробуйте заменить их:
function swapInput(tag, type) {
var el = document.createElement('input');
el.id = tag.id;
el.type = type;
el.name = tag.name;
el.value = tag.value;
tag.parentNode.insertBefore(el, tag);
tag.parentNode.removeChild(tag);
}
function toggle_password(target){
var d = document;
var tag = d.getElementById(target);
var tag2 = d.getElementById("showhide");
if (tag2.innerHTML == 'Show'){
swapInput(tag, 'text');
tag2.innerHTML = 'Hide';
} else {
swapInput(tag, 'password');
tag2.innerHTML = 'Show';
}
}
надеюсь, что это поможет -ck
Ответ 2
Вот пример, используя jQuery
(pastebin):
$(document).ready(function() {
$("#showHide").click(function() {
if ($(".password").attr("type") == "password") {
$(".password").attr("type", "text");
} else {
$(".password").attr("type", "password");
}
});
});
#showHide {
width: 15px;
height: 15px;
float: left;
}
#showHideLabel {
float: left;
padding-left: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tr>
<td>Password:</td>
<td>
<input type="password" name="password" class="password" size="25">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="checkbox" id="showHide" />
<label for="showHide" id="showHideLabel">Show Password</label>
</td>
</tr>
</table>
Ответ 3
Из-за соображений безопасности вы не можете изменить тип элемента ввода. Вы должны заменить весь элемент на новый.
Ответ 4
Его очень легко достичь... Я нашел это сообщение в блоге, в котором описывается способ сделать это с помощью нескольких строк кода. Я думаю, что это не очень хорошая практика, чтобы сохранить такой вариант, потому что к паролям нужно относиться серьезно.
вот код с этой страницы; он использует тот же подход, что и вы описали. но использует check-box.and практически я видел то, что он указывает в oss, как linux. они даже не оставляют следов пароля со звездочкой (но это делает gui, не знаю, что они действительно заботятся о конфиденциальности pw, или им трудно сделать это в командной строке;-))
var textbox_elem = document.getElementById("password");
if(check_box.checked)
textbox_elem.setAttribute("type", "text");
else
textbox_elem.setAttribute("type", "password");
Ответ 5
http://www.voidtricks.com/password-show-hide-checkbox-click/
Это простой учебник, показывающий пароль в поле ввода, когда флажок установлен и спрятан, когда флажок снят с помощью jQuery.
Javascript
<script type="text/javascript">
$(document).ready(function () {
$("#showHide").click(function () {
if ($(".password").attr("type")=="password") {
$(".password").attr("type", "text");
}
else{
$(".password").attr("type", "password");
}
});
});
</script>
<!-- language: lang-html -->
HTML *
<input type="password" class="password"><br>
<input type="checkbox" id="showHide"> Show?
* У нас есть поле ввода пароля с классом "пароль" и флажок с идентификатором "showHide"
Простое решение для показа/скрытия пароля с помощью флажков, и это уровень noob просто копирует/вставляет. СДЕЛАННЫЙ!!!; -)
Ответ 6
Если мы создаем тип текстового поля как "passowrd"
, то символы не отображаются, но когда мы создаем текстовый тип "text"
, символы отображаются по мере ввода.
Следовательно, логика очень проста. Мы можем изменить тип любого элемента HTML с помощью функции "setAttribute(type,newvalue)"
JavaScript.
Полный пример кода можно увидеть по ссылке ниже:
http://www.tutor4web.com/javascript/how-to-show-password-as-text-with-checkbox-using-javascript/
Ответ 7
ваше решение может быть
function toggle_pass(){
var pass = document.getElementById('showhide').innerHTML;
if(pass=="show")
{
document.getElementById('pwd0').type = "text";
pass= "Hide";
}
else
{
document.getElementById('pwd0').type = "password";
pass = "Show Password";
}
}
Ответ 8
Вы можете использовать встроенную script для простой реализации show/hide password.
<form>
<input
onmouseover="this.setAttribute('type','text')"
onmouseout="this.setAttribute('type','password')"
placeholder="Hover to show password!"
type="password"
name="password-login"
id="password-login"
>
</form>
Ответ 9
Хотя на вопрос все еще есть ответ, я все еще отправляю этот ответ.
function toggle_password () {
var tag = document.getElementById("pwd0");
var tag2 = document.getElementById("showhide");
if (tag2.innerHTML == 'Show'){
tag.type="text";
tag2.innerText = 'Hide';
}
else {
tag.type="password";
tag2.innerText = 'Show';
}
}
<label for="pwd0">Password:</label>
<input type="password" value="####" name="password" id="pwd0" />
<a href="#" onclick="toggle_password();" id="showhide">Show</a>
Ответ 10
Я считаю, что это то, что вы хотели:
function toggle_password(){
var d = document;
var tag = d.getElementById("pwd");
var tag2 = d.getElementById("showhide");
if (tag2.innerHTML == 'Show'){
tag.setAttribute('type', 'text');
tag2.innerHTML = 'Hide';
} else {
tag.setAttribute('type', 'password');
tag2.innerHTML = 'Show';
}
}
#input_field{
margin:25px;
padding:25px;
border:5px solid black;
}
<html>
<head>
</head>
<body>
<div id="input_field">
<label for="pwd">Password:</label>
<input type="password" value="" name="password" id="pwd" />
<a href="#" onclick="toggle_password();"
id="showhide">Show</a>
<div>
</body>
</html>
Ответ 11
Это полный ответ:
<!DOCTYPE html>
<html>
<head>
<title>Show/Hide password (button)</title>
</head>
<body>
<input type="password" id="i">
<input type="button" value="Show Password" onclick="f()" id="k"></input>
<script>
function f() {
var a=document.getElementById("i");
if (a.getAttribute("type")==="password") {
document.getElementById("i").setAttribute("type","text");
document.getElementById("k").setAttribute("value","Hide Password");
}
else {
document.getElementById("i").setAttribute("type","password");
document.getElementById("k").setAttribute("value","Show Password");
}
}
</script>
</body>
</html>
Источник: https://www.youtube.com/watch?v=OcfL8qJNaQY
Ответ 12
Не меняйте тип ввода, изменяйте размер текста. Сделайте его очень маленьким для Hide.