Попытка изменить атрибут типа input
от password
до text
.
$('.form').find('input:password').attr({type:"text"});
Почему это не работает?
Попытка изменить атрибут типа input
от password
до text
.
$('.form').find('input:password').attr({type:"text"});
Почему это не работает?
Вы не можете сделать это с помощью jQuery, он явно запрещает его, потому что IE не поддерживает его (проверьте свою консоль, вы увидите ошибка.
Вам нужно удалить вход и создать новый, если это вам нужно, например:
$('.form').find('input:password').each(function() {
$("<input type='text' />").attr({ name: this.name, value: this.value }).insertBefore(this);
}).remove();
Чтобы яснить ограничение, jQuery не позволит изменять type
на <button>
или <input>
, поэтому поведение совместимо с несколькими браузерами (поскольку IE этого не позволяет, они решили, что это запрещено везде), При попытке получить эту ошибку в консоли:
Ошибка: свойство не может быть изменено
мое решение:
$('#myinput').clone().attr('type','tel').insertAfter('#myinput').prev().remove();
Я знаю, что немного опоздал в игру, но я просто смог сделать это в IE9 (похоже, Microsoft решила это разрешить?). Однако мне пришлось сделать это с помощью прямого JavaScript. Это всего лишь образец формы с выпадающим списком, который изменяет тип поля в зависимости от того, что выбрано в раскрывающемся списке.
function switchSearchFieldType(toPassword) {
$('#SearchFieldText').val('');
if (toPassword === true) {
$('#SearchFieldText').get(0).setAttribute('type', 'password');
} else {
$('#SearchFieldText').get(0).setAttribute('type', 'text');
}
}
$('#SelectedDropDownValue').change(function () {
if ($("select option:selected").val() === 'password') {
switchSearchFieldType(true);
}
else {
switchSearchFieldType(false);
}
}).change();
ИСПОЛЬЗОВАТЬ prop
вместо attr
$('.form').find('input:password').prop({type:"text"});
Это должно работать легко.
$("selector").attr('type', 'hidden');
//Changing it to hidden
Вот две функции, принимающие массив селекторов (ов) в качестве параметра, который выполнит это:
// Turn input into Number keyboard
function inputNumber(numArr) {
if (numArr instanceof Array) {
for (var i = 0; i < numArr.length; i++) {
if ($(numArr[i]).length > 0) {
var copy = $(numArr[i]);
var numEle = copy.clone();
numEle.attr("type", "number");
numEle.insertBefore(copy);
copy.remove();
}
}
}
}
// Turn input into Email keyboard
function inputEmail(emailArr) {
if (emailArr instanceof Array) {
for (var i = 0; i < emailArr.length; i++) {
if ($(emailArr[i]).length > 0) {
var copy = $(emailArr[i]);
var numEle = copy.clone();
numEle.attr("type", "number");
numEle.insertBefore(copy);
copy.remove();
}
}
}
}
Затем вы можете использовать это как:
var numberArr = ["#some-input-id", "#another-input-id"];
var emailArr = ["#some-input-id", "#another-input-id"];
inputNumber(numberArr);
inputEmail(emailArr);
function passShowHide(){
if( $("#YourCheckBoxID").prop('checked') ){
document.getElementById("EnterPass").attributes["type"].value = "text";
}
else{
document.getElementById("EnterPass").attributes["type"].value="password";}
Это довольно легко. Это работает очень хорошо.
$('#btn_showHide').on('click', function() {
if($(this).text() == 'Show')
{
$(this).text('Hide');
$('#code').attr('type', 'text');
}
else
{
$(this).text('Show');
$('#code').attr('type', 'password');
}
});