$(document).ready(function() {
// #login-box password field
$('#password').attr('type', 'text');
$('#password').val('Password');
});
Это должно изменить #password
поле ввода (с id="password"
), которое является type
password
нормальным текстовым полем, а затем заполнить текст «Пароль».
Это не работает, хотя. Зачем?
Вот форма:
<form enctype="application/x-www-form-urlencoded" method="post" action="/auth/sign-in">
<ol>
<li>
<div class="element">
<input type="text" name="username" id="username" value="Prihlasovacie meno" class="input-text" />
</div>
</li>
<li>
<div class="element">
<input type="password" name="password" id="password" value="" class="input-text" />
</div>
</li>
<li class="button">
<div class="button">
<input type="submit" name="sign_in" id="sign_in" value="Prihlásiť" class="input-submit" />
</div>
</li>
</ol>
</form>
javascript
jquery
html-input
Ричард Кноп
источник
источник
Ответы:
Вполне вероятно, что это действие предотвращается как часть модели безопасности браузера.
Редактировать: действительно, тестируя прямо сейчас в Safari, я получаю ошибку
type property cannot be changed
.Редактировать 2: это похоже на ошибку прямо из jQuery. Использование следующего прямого кода DOM прекрасно работает:
Редактировать 3: Прямо из источника jQuery, это, похоже, связано с IE (и может быть либо ошибкой, либо частью их модели безопасности, но jQuery не конкретен):
источник
attr
но позволяет изменятьtype
атрибутыinput
элементов.Еще проще ... нет необходимости создавать все динамические элементы. Просто создайте два отдельных поля, сделав одно поле «реальным» паролем (type = "password") и одно - полем "fake" password (type = "text"), установив для текста в поле fake светло-серый цвет и установка начального значения на «Пароль». Затем добавьте несколько строк Javascript с помощью jQuery, как показано ниже:
Поэтому, когда пользователь вводит поле «фальшивого» пароля, оно будет скрыто, будет показано реальное поле, и фокус переместится на реальное поле. Они никогда не смогут вводить текст в поддельные поля.
Когда пользователь покидает поле с реальным паролем, скрипт увидит, является ли он пустым, и если это так, скроет реальное поле и покажет поддельное.
Будьте осторожны, чтобы не оставить пробел между двумя элементами ввода, потому что IE будет располагаться один немного за другим (рендеринг пробела), и поле будет двигаться, когда пользователь входит / выходит из него.
источник
$('#password').show(); $('#password').focus();
$('#password').show().focus();
Одношаговое решение
источник
document.getElementById
должно быть достаточно, и вам не нужен jQuery для этого! ;-)В настоящее время вы можете просто использовать
Но, конечно, вы должны просто сделать это
во всех, кроме IE. Существуют заполнители, имитирующие эту функциональность в IE.
источник
placeholder="Password"
. Спецификация HTML и MDN дляplaceholder
атрибута. JavaScript Призонная шайба дляplaceholder
.Более кросс-браузерное решение ... Надеюсь, суть в этом кому-то поможет.
Это решение пытается установить
type
атрибут, и в случае сбоя оно просто создает новый<input>
элемент, сохраняя атрибуты элемента и обработчики событий.changeTypeAttr.js
( GitHub Gist ):источник
Это работает для меня.
источник
Лучший способ использовать jQuery:
Оставьте оригинальное поле ввода скрытым от экрана.
Создать новое поле ввода на лету с помощью JavaScript.
Перенесите идентификатор и значение из скрытого поля ввода в новое поле ввода.
Чтобы обойти ошибку в IE
type property cannot be changed
, вы можете найти это полезным, как показано ниже:Прикрепите событие click / focus / change к новому элементу ввода, чтобы вызвать то же событие на скрытом вводе.
Старый скрытый элемент ввода все еще находится внутри DOM, поэтому будет реагировать на событие, вызванное новым элементом ввода. При смене идентификатора новый элемент ввода будет действовать как старый и реагировать на любой вызов функции для старого идентификатора скрытого ввода, но выглядит иначе.
источник
Вы пытались использовать .prop ()?
http://api.jquery.com/prop/
источник
Я не тестировал в IE (так как мне нужно было это для сайта iPad) - форму, которую я не мог изменить HTML, но я мог добавить JS:
(Старая школа JS ужасна рядом со всеми jQuery!)
Но http://bugs.jquery.com/ticket/1957 ссылается на MSDN: «Начиная с Microsoft Internet Explorer 5, свойство type доступно только для чтения / записи, но только когда элемент ввода создается с помощью метода createElement и прежде чем он будет добавлен в документ ". так что, может быть, вы могли бы дублировать элемент, изменить тип, добавить в DOM и удалить старый?
источник
Просто создайте новое поле, чтобы обойти эту функцию безопасности:
источник
Я получил то же сообщение об ошибке при попытке сделать это в Firefox 5.
Я решил это с помощью кода ниже:
И чтобы использовать его, просто установите для атрибутов onFocus и onBlur ваших полей что-то вроде следующего:
Я использую это для поля имени пользователя, так что оно переключает значение по умолчанию. Просто установите второй параметр функции на '', когда вы вызываете его.
Также, возможно, стоит отметить, что тип поля моего пароля по умолчанию на самом деле является паролем, на случай, если у пользователя не включен javascript или если что-то пойдет не так, его пароль по-прежнему защищен.
Функция $ (document) .ready - это jQuery, которая загружается после завершения загрузки документа. Это тогда изменяет поле пароля на текстовое поле. Очевидно, вам придется изменить 'password_field_id' на идентификатор поля вашего пароля.
Не стесняйтесь использовать и изменять код!
Надеюсь, это поможет всем, у кого была такая же проблема, как и у меня :)
- CJ Кент
РЕДАКТИРОВАТЬ: хорошее решение, но не абсолютное. Работает на FF8 и IE8, НО не полностью на Chrome (16.0.912.75 ver). Chrome не отображает текст пароля при загрузке страницы. Также - FF будет отображать ваш пароль при включенном автозаполнении.
источник
Простое решение для всех тех, кто хочет функционировать во всех браузерах:
HTML
JQuery
источник
Это сработало для меня.
источник
Свойства типа не могут быть изменены, вам нужно заменить или наложить ввод на текстовый ввод и отправить значение на ввод пароля при отправке.
источник
Я думаю, вы могли бы использовать фоновое изображение, содержащее слово «пароль», и заменить его обратно на пустое фоновое изображение
.focus()
..blur()
----> изображение с "паролем".focus()
-----> изображение без "пароля"Вы также можете сделать это с помощью CSS и jQuery. Текстовое поле должно отображаться точно над полем пароля, hide () находится в фокусе () и фокусируется на поле пароля ...
источник
Попробуйте это
демо здесь
источник
Это работает намного легче с этим:
и чтобы снова вернуть его в поле пароля ( при условии, что поле пароля является вторым входным тегом с типом текста ):
источник
использовать это очень легко
источник
источник
источник
Это сделает свое дело. Хотя это может быть улучшено, чтобы игнорировать атрибуты, которые сейчас не имеют значения.
Плагин:
Использование:
Скрипки:
http://jsfiddle.net/joshcomley/yX23U/
источник
Просто это:
Такие как
Это предполагает, что ваше поле ввода было установлено на «текст» перед рукой.
источник
Вот небольшой фрагмент, который позволяет вам изменять
type
элементы документов.jquery.type.js
( GitHub Gist ):Эта проблема решается путем удаления
input
из документа, измененияtype
и затем возвращая его туда, где он был изначально.Обратите внимание, что этот фрагмент был протестирован только для браузеров WebKit - никаких гарантий ни на что другое!
источник
delete jQuery.attrHooks.type
для удаления специальной обработки типов ввода в jQuery.Вот метод, который использует изображение рядом с полем пароля для переключения между просмотром пароля (ввод текста) и его не видением (ввод пароля). Я использую изображение «открытый глаз» и «закрытый глаз», но вы можете использовать все, что вам подходит. Это работает, когда у вас есть два входа / изображения, и после нажатия на изображение значение копируется из видимого ввода в скрытый, а затем их видимость меняется. В отличие от многих других ответов, в которых используются жестко заданные имена, этот достаточно общий, чтобы использовать его несколько раз на странице. Это также изящно ухудшается, если JavaScript недоступен.
Вот как они выглядят на странице. В этом примере пароль-A был раскрыт, нажав на его глаз.
источник
Мне нравится этот способ, чтобы изменить тип элемента ввода: old_input.clone () .... Вот пример. Есть флажок "id_select_multiple". Если это значение изменено на «selected», элементы ввода с именем «foo» должны быть заменены на флажки. Если он не отмечен, они должны снова стать переключателями.
источник
вот решение DOM
источник
Я создал расширение jQuery для переключения между текстом и паролем. Работает в IE8 (вероятно, 6 и 7, но не проверено) и не потеряет ваше значение или атрибуты:
Работает как шарм. Вы можете просто позвонить,
$('#element').togglePassword();
чтобы переключиться между ними или дать возможность «форсировать» действие, основанное на чем-то другом (например, флажок):$('#element').togglePassword($checkbox.prop('checked'));
источник
Просто еще один вариант для всех любителей IE8, и он отлично работает в новых браузерах. Вы можете просто раскрасить текст в соответствии с фоном ввода. Если у вас есть одно поле, оно изменит цвет на черный, когда вы щелкните / сфокусируйтесь на поле. Я бы не стал использовать это на общедоступном сайте, поскольку это «запутало бы» большинство людей, но я использую его в разделе ADMIN, где только один человек имеет доступ к паролям пользователей.
-ИЛИ-
Это также необходимо, когда вы покинете поле, текст снова станет белым. Просто, просто, просто.
[Другой вариант] Теперь, если у вас есть несколько полей, которые вы проверяете, все с тем же идентификатором, для которого я его использую, добавьте класс 'pass' к полям, в которых вы хотите скрыть текст. Установите поля пароля введите «текст». Таким образом, будут изменены только поля с классом «pass».
Вот вторая часть этого. Это изменит текст обратно на белый после того, как вы покинете поле.
источник
Я просто сделал следующее, чтобы изменить тип входа:
и это работает.
Мне нужно было сделать это, потому что я использовал средства выбора даты jQuery UI в проекте ASP NET Core 3.1, и они не работали должным образом в браузерах на основе Chromium (см. Https://stackoverflow.com/a/61296225/7420301 ).
источник