JQuery изменить тип ввода - PullRequest
       1

JQuery изменить тип ввода

32 голосов
/ 22 августа 2010

Попытка изменить атрибут типа input с password на text.

$('.form').find('input:password').attr({type:"text"});

Почему это не работает?

Ответы [ 9 ]

51 голосов
/ 22 августа 2010

Вы не можете сделать это с 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 не позволяет этого, они решили, что это запрещено везде).эта ошибка в консоли:

Ошибка: свойство типа не может быть изменено

49 голосов
/ 27 сентября 2012

мое решение:

    $('#myinput').clone().attr('type','tel').insertAfter('#myinput').prev().remove();
11 голосов
/ 18 августа 2015

ИСПОЛЬЗОВАТЬ prop вместо attr

$('.form').find('input:password').prop({type:"text"});
10 голосов
/ 20 ноября 2012

Я знаю, что немного опоздал на игру, но я только смог сделать это в 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();
7 голосов
/ 23 июня 2015

Это должно работать легко.

$("selector").attr('type', 'hidden'); 
//Changing it to hidden
4 голосов
/ 03 мая 2018

Сейчас 2018 год, и jQuery теперь поддерживает эту функцию.Будет работать следующее:

$('.form').find('input:password').attr("type","text");
0 голосов
/ 23 октября 2016

Это довольно легко, ты.Это работает довольно хорошо.

 $('#btn_showHide').on('click', function() {
    if($(this).text() == 'Show')
    {
      $(this).text('Hide');
      $('#code').attr('type', 'text');
    }
    else
    {
      $(this).text('Show');
      $('#code').attr('type', 'password');
    }
  });
0 голосов
/ 26 июня 2016
function passShowHide(){
  if( $("#YourCheckBoxID").prop('checked') ){
    document.getElementById("EnterPass").attributes["type"].value = "text";
  }
  else{
    document.getElementById("EnterPass").attributes["type"].value="password";}
0 голосов
/ 22 марта 2013

Вот две функции, принимающие массив селекторов в качестве параметра, который будет выполнять это:

  // 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...