Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   изменить type='password' в ie (https://javascript.ru/forum/events/35718-izmenit-type%3D%27password%27-v-ie.html)

Vaio 19.02.2013 21:55

изменить type='password' в ie
 
Собственно сабж.
Нужно изменить type="password" на type="test" в IE, у меня это никак не удается.
Мой код:

<script>

	var pass = document.getElementById('pass');
	var repass = document.getElementById('repass');

	pass.type = "text";
	repass.type = "text";

}
</script>

danik.js 19.02.2013 21:58

Цитата:

Сообщение от Vaio
у меня это никак не удается

И не удастся. http://javascript.ru/forum/css-html-...buta-type.html

рони 19.02.2013 21:58

Vaio,
перезаписывайте весь input а не только его тип

Vaio 19.02.2013 22:02

Цитата:

Сообщение от danik.js
И не удастся. в теге input изменение атрибута type

Там написали

Цитата:

Сообщение от lancer (Сообщение 8291)
Пришлось делать! Не так уж и сложно оказалось.
Прямая наводка на решения вопроса на этом форуме, кстати, в разделе DOM/EVENTS...

Вроде как сделали, вот только решением не поделились


Цитата:

Сообщение от рони
перезаписывайте весь input а не только его тип

подскажите как?

danik.js 19.02.2013 22:06

Например
pass.parentNode.replaceChild(document.createElement('input'), pass);

Vaio 19.02.2013 22:52

Цитата:

Сообщение от danik.js (Сообщение 235654)
Например
pass.parentNode.replaceChild(document.createElement('input'), pass);

Спасибо так работает. А можно через replace просто заменить type?

danik.js 19.02.2013 23:07

Vaio, да у вас склероз ведь! Только что ведь выяснили что type сменить нельзя (в IE)

Vaio 20.02.2013 00:44

danik.js, посмотрите, пожалуйста, как здесь это реализовали. Работает в IE, в коде смог разобраться..

danik.js 20.02.2013 07:56

Цитата:

Сообщение от Vaio
danik.js, посмотрите, пожалуйста, как здесь это реализовали

Что там смотреть? Там две разных формы, они вообще никак друг с другом не взаимодействуют.

ksa 20.02.2013 08:08

Цитата:

Сообщение от Vaio
в коде смог разобраться

Таки показал бы тут тестовый пример... :)

cyber 20.02.2013 16:55

Vaio,
можно сделать вот такой костыль
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    <div id="container">
      <input type="text" id="input_text"/>
      <input type="password" id="input_password" />
      
    </div>
    
    <input type="button" value="show/hide" onclick = "test();">
    <script>

      function $(selector){
       
        return document.querySelector(selector);
      }


      function password(params){
      
        var self = this;
        this.show = params.show;
        
        getState();
        this.getState = getState;
        params.text.onkeypress = onKeypress;
        params.password.onkeypress = onKeypress;
        
        
        function onKeypress(){
          
          var self = this;
        
          setTimeout(function(){
          
            var attr = self.getAttribute("type");
     
            if(attr == "text") params.password.value = self.value;
            else params.text.value = self.value;
            
          },0);
        
        }
        
       function getState  (){
    
          if(self.show)
          { 
            
            setDisplay(params.text, true);
             setDisplay(params.password, false);

          } 
          else 
          {
            
            setDisplay(params.text, false);
             setDisplay(params.password, true);
       
          }
        
          self.show = !self.show;
        }
      
        function setDisplay(elem, show){
        
          if(show) elem.style.display = "";
          else elem.style.display = "none";
        
        }
      }
      
      
      
   var pass = new   password({
        password:$("#input_password"),
        text:$("#input_text"),
     show:false // задает показывать ли изначально содержимое
        
      });
      
      
      function test(){
      pass.getState();//метод изменяет  состояние (показываеть скрывает)
      };
      
    </script>

  </body>
</html>

Hekumok 20.02.2013 17:09

cyber,
function $(selector){
return document.querySelectorAll(selector)[0];
}

А почему не так
function $(selector){
return document.querySelector(selector);
}

cyber 20.02.2013 17:15

Hekumok,
потому что это просто пример, и мне просто так удобней)

danik.js 20.02.2013 17:24

Цитата:

Сообщение от Hekumok
А почему не так

Потому что не всем кажется логичное логичным. Есть еще люди - мазохисты, они тоже делают непонятные вещи ради удовольствия.

cyber 20.02.2013 17:27

просто это уже привычка, когда пишу тестовый пример в основном делаю что бы функция возвращала 1 элемент и если нужно делаю еще 1 что бы возвращала массив(нужно очень редко). Просто лень каждый раз писать $("#id")[0] и все))

Hekumok 20.02.2013 18:30

Цитата:

Сообщение от cyber
Просто лень каждый раз писать $("#id")[0] и все))

Ну дык зачем [0]? querySelector - это не querySelectorAll и возвращает один элемент, а не массив

cyber 20.02.2013 18:39

Hekumok,тупая привычка за которую нужно начинать бить себя по рукам(по тому что querySelector быстрей);)


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