Ответ 1
Невозможно изменить свойство/атрибут'type.
edit: Это было точно для JQuery в то время, когда оно было опубликовано. См. Другие ответы, как это можно сделать сейчас.
Почему jQuery не меняет атрибут type #password_input на пароль?
<html>
<head>
<title></title>
<style type="text/css">
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#password_input").attr('type','password');
});
</script>
</head>
<body>
<div id="loginBox">
<form>
<input type="text" id="username_input" name="username" /><br />
<input type="text" id="password_input" name="password" />
</form>
</div>
</body>
</html>
'type.
edit: Это было точно для JQuery в то время, когда оно было опубликовано. См. Другие ответы, как это можно сделать сейчас.
Да и может.
Попробуйте выполнить его работы
<input type="text" class="pwd">
$('.pwd').click(function(){
$(this).get(0).type='password';
});
Это мера безопасности, которую используют большинство основных браузеров для смягчения экрана и кражи пароля (что более важно, иными словами, от password
до text
).
Я не могу сказать из вашего кода, что вы пытаетесь сделать, но здесь моя догадка: вы хотите, чтобы текстовое поле со словом password
было в нем подсказкой, и когда оно фокусируется, пользователь вводит свои пароль в качестве поля пароля. Для этого вы можете использовать два элемента: <input type="text">
и <input type="password">
, последний из которых скрыт изначально. Когда пользователь сосредоточится на текстовом поле, просто скройте его, покажите поле пароля и установите фокус. Это может стать сложным переключением между ними.
В современных браузерах это проще сделать. Просто используйте что-то вроде этого (здесь jsFiddle):
<input type="password" placeholder="Password" />
Вы не можете изменить атрибут type. вы должны создать новый элемент и удалить старый, например:
var originalBtn = $("#password_input");
var newBtn = originalBtn.clone();
newBtn.attr("type", "password");
newBtn.insertBefore(originalBtn);
originalBtn.remove();
newBtn.attr("id", "password_input");
Вы всегда можете использовать чистые js как:
document.getElementsByName("login_pass")[0].type="text";
Это сделает это
$('<input type="password" id="password_input" name="password" />').insertAfter('#password_input').prev().remove();
UPDATE
Если вы хотите показывать простой текст в поле пароля, а затем сделать его обычным паролем в фокусе, вы можете сделать следующее
$('#clear').focus(function() {
$('#clear').hide();
$('#password_input').show().focus();
});
$('#password_input').blur(function() {
if ($('#password_input').val() == '') {
$('#clear, #password_input').toggle();
}
});
где #clear
представляет текстовое поле, которое показывает вместо поля пароля, когда оно размывается, и пользователь еще не ввел пароль.
Просто создайте 2 поля ввода синхронизации. Один как пароль и один как текст. Затем переключите их видимость с помощью кнопки. Не забудьте скрыть ввод текста при запуске.
<input type="password" id="inp_passwd"/><input type="password" id="inp_passwd2"/>
<input id="btn_show_passwd" type="button" value="Show Password" />
JavaScript:
// sync input fields
$('#inp_passwd').keyup(function(){
$('#inp_passwd2').val($(this).val());
});
// show clear password
$('#btn_show_passwd').mousedown(function(){
$('#inp_passwd').hide();
$('#inp_passwd2').show();
});
// hide clear password
$('#btn_show_passwd').mouseup(function(){
$('#inp_passwd').show();
$('#inp_passwd2').hide();
});
// hide hidden text-field on start
$('#btn_show_passwd').mouseup();
вы можете использовать setTimeout, а не вместо mouseup
<span>Password:</span>
<input type="text" id="pwd" style="width: 180px; color: Gray;" onfocus="Changetxt();this.type='password'" onblur="if(this.value==''){this.type='text';textboxtype();}" value="Enter Your Password Here" />
<script>
function Changetxt() {
if ($('#pwd').val() == "Enter Your Password Here") {
$('#pwd').val('');
$('#pwd').css('color', 'black');
}
}
function textboxtype() {
if ($('#pwd').val().length < 1) {
$('#pwd').val('Enter Your Password Here');
$('#pwd').css('color', 'gray');
}
}
</script>
Пробовали ли вы использовать .prop?
$("#password_input").prop('type','password');
Возможно, потребуется отобразить текстовую информацию в поле пароля, сделав снимок, установить фон фона в поле пароля и удалить, когда фокус фонового поля пароля изменит фоновое изображение, чтобы добиться эффекта запроса пользователя
Недавно я столкнулся с аналогичной проблемой, и мне хотелось бы оценить мое мнение.
Я использовал некоторые из вышеперечисленных решений и некоторые другие, используя jQuery (который мне очень нравится). Но когда пришло время тестирования, мы понимаем, что решения через jQuery и attr()
не работают. Поэтому я нахожу подходящее решение через чистый Javascript.
var input = document.getElementById('txbOldPass');
var newInput = document.createElement('input');
newInput.type = 'text';
newInput.id = input.id;
newInput.value = input.value;
input.parentNode.replaceChild(newInput, input);
newInput.className = 'text';
и наоборот
var input = document.getElementById('txbOldPass');
var newInput = document.createElement('input');
newInput.type = 'password';
newInput.id = input.id;
newInput.value = input.value;
input.parentNode.replaceChild(newInput, input);
newInput.className = 'password';
Все решения здесь не работали для меня (Chrome Version 51.0.2704.103 m (64-разрядная версия)). Было ли это так, и он работает:
jQuery(function() {
setTimeout(function(){
jQuery('.pwForm').attr('type','password');
}, 1);
});
Работает и с IE 11!
Дождитесь готовности DOM и подождите 1 миллисекунду. Затем измените тип = текст на тип = пароль
Приведенные выше ответы частично ошибочны, если они не могут быть изменены. Да, его можно изменить с помощью метода prop/attr jquery. Дело в том, что оно поддерживается всеми браузерами, но IE