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)

cyber 20.02.2013 18: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 19:09

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

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

cyber 20.02.2013 19:15

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

danik.js 20.02.2013 19:24

Цитата:

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

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

cyber 20.02.2013 19:27

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

Hekumok 20.02.2013 20:30

Цитата:

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

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

cyber 20.02.2013 20:39

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


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