Hogyan cseréljünk le egy password mezőt text mezőre

A Űrlap mező helykitöltő jQuery kiegészítő bejegyzés kapcsán merült fel, hogyan lehetne lecserélni a password mezőt egy text mezőre., Így az inputPlaceholder plugin az is ki tudná írni a „password” mezőbe, hogy „_jelszó” nem csak „******_” szerepelne a mezőben.

Ennek érdekében lemásoljuk az eredeti password mezőt, az összes tulajdonságával együtt, majd beszúrjuk a jelszó mező elé, de már mint szövegmező. Erre azért van szükség, mert Internet Explorer esetén, a már dokumentumban levő jelszó mezőből nem tudunk szövegmezőt csinálni. Írtam is egy nagyszerű kis jQuery kiegészítőt, ami ezt meg is csinálja:

(function ($) {
  $.fn.extend({
    passwordTextSwap : function () {
      this.filter('input:password').each(function () {
        var pw = this,
            attributes = {              // Kötelező attribútumok, és az
              focus: function (event) { // eseménykezelőnk.
                $(pw).show();
                $(this).hide()
                pw.focus();
                event.preventDefault();
              },
              type: 'text',
              value: '',
              id: $.noop(),
              name: $.noop()
            },
            al = pw.attributes.length,
            i = 0,
            attr, ph;

        // Lemásoljuk az attributumokat.
        for (; i < al; i += 1) {
          attr = pw.attributes[i];
          // A már létező mezőket és a `name` mezőt nem másoljuk.
          if (!(attr.name in attributes)) {
            attributes[attr.name] = attr.value;
          }
        }

        // Ha elhagyjuk a jelszó mezőt, és az üres,
        // akkor visszaállítjuk a szövegmezőt helyette.
        $(pw).hide().blur(function () {
          if (!this.value) {
            ph.show();
            $(this).hide()
          }
        });

        // Beszúrjuk a szövegmezőt a jelszó mező elé.
        ph = $('<input>', attributes).insertBefore(this);
      });
      return this;
    }
  });
}(jQuery));

GitHub

A kiegészítő felköltözött a GitHub-ra, érdemes ott nézni, hogyan fejlődik.

comments powered by Disqus