JQuery своп текстовое поле для поля пароля не работает в IE8 - PullRequest
0 голосов
/ 30 ноября 2011

В форме входа в моем веб-приложении я использую jQuery, чтобы заменить текстовое поле на поле пароля, как только оно получит фокус. Он работает везде, кроме IE8 (и, я полагаю, ниже - хотя я не проверял.)

var originalField = $(this);          // Original field
var newField = $(this).clone();       // New field, cloned from the old one
newField.attr("type", "password");    // Change the new field's type to password
newField.insertBefore(originalField); // Insert the new field
originalField.remove();               // Remove the old one
newField.attr("id", "password");      // Give new field the id "password" (for CSS)
newField.select();                    // Bring focus to the new field

Мысли

РЕДАКТИРОВАТЬ: Извините, я не указал, но "не работает" в IE означает, что поле просто не заменяется. Когда я набираю поле пароля в IE, я могу прочитать его содержимое.

РЕДАКТИРОВАТЬ 2: Вот скрипка с HTML и JS: http://jsfiddle.net/franktisellano/v5D9W/3/

1 Ответ

0 голосов
/ 29 апреля 2014

IE8 не позволяет вам изменить тип входа. Вы получаете такую ​​ошибку в Dev Tools Error: This command is not supported.<input class="custom" title=Password value="" type=password name=password placeholder="Password">.

Плагин jquery.placeholder работает вокруг этого, просто создав новый элемент и скопировав атрибуты из старого элемента.

function extractAttributes(elem) {
    var attr = elem.attributes, copy = {}, skip = /^jQuery\d+/;
    for(var i = 0; i < attr.length; i++) {
        if(attr[i].specified && !skip.test(attr[i].name)) {
            copy[attr[i].name] = attr[i].value;
        }
    }
    return copy;
}

$clone = $('<input/>')
  .attr($.extend(extractAttributes(this), {type: 'text', value: placeholder, 'data-password': 1, id: cid}))
  .addClass('placeholder');

https://github.com/matoilic/jquery.placeholder/blob/master/jquery.placeholder.js#L80-L82

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...