Essayer de changer l'attribut de type input
de password
à text
.
$('.form').find('input:password').attr({type:"text"});
Pourquoi ça ne marche pas?
Vous ne pouvez pas faire cela avec jQuery, il l'interdit explicitement parce que IE ne le supporte pas (vérifiez sur votre console que vous verrez une erreur.
Vous devez supprimer l'entrée et en créer une nouvelle si c'est ce que vous voulez, par exemple:
$('.form').find('input:password').each(function() {
$("<input type='text' />").attr({ name: this.name, value: this.value }).insertBefore(this);
}).remove();
Pour être clair sur la restriction, jQuery ne permettra pas de changer type
sur un <button>
ou <input>
, de sorte que le comportement est cohérent pour tous les navigateurs (puisque IE ne le permet pas, ils ont décidé que ce n'était pas autorisé partout). En essayant, vous aurez cette erreur dans la console:
Erreur: la propriété de type ne peut pas être modifiée
ma solution:
$('#myinput').clone().attr('type','tel').insertAfter('#myinput').prev().remove();
Je sais que je suis un peu en retard pour le jeu, mais je pouvais le faire dans IE9 (il semble que Microsoft ait décidé de le permettre?) Cependant, je devais le faire avec JavaScript. Ceci est juste un exemple de formulaire avec une liste déroulante qui modifie le type de champ en fonction de ce qui est sélectionné dans la liste déroulante.
function switchSearchFieldType(toPassword) {
$('#SearchFieldText').val('');
if (toPassword === true) {
$('#SearchFieldText').get(0).setAttribute('type', 'password');
} else {
$('#SearchFieldText').get(0).setAttribute('type', 'text');
}
}
$('#SelectedDropDownValue').change(function () {
if ($("select option:selected").val() === 'password') {
switchSearchFieldType(true);
}
else {
switchSearchFieldType(false);
}
}).change();
UTILISER prop
à la place attr
$('.form').find('input:password').prop({type:"text"});
Cela devrait fonctionner facilement.
$("selector").attr('type', 'hidden');
//Changing it to hidden
Nous sommes en 2018 et jQuery prend désormais en charge cette fonctionnalité. Ce qui suit fonctionnera:
$('.form').find('input:password').attr("type","text");
Voici deux fonctions, acceptant un tableau de sélecteurs en guise de paramètre:
// Turn input into Number keyboard
function inputNumber(numArr) {
if (numArr instanceof Array) {
for (var i = 0; i < numArr.length; i++) {
if ($(numArr[i]).length > 0) {
var copy = $(numArr[i]);
var numEle = copy.clone();
numEle.attr("type", "number");
numEle.insertBefore(copy);
copy.remove();
}
}
}
}
// Turn input into Email keyboard
function inputEmail(emailArr) {
if (emailArr instanceof Array) {
for (var i = 0; i < emailArr.length; i++) {
if ($(emailArr[i]).length > 0) {
var copy = $(emailArr[i]);
var numEle = copy.clone();
numEle.attr("type", "number");
numEle.insertBefore(copy);
copy.remove();
}
}
}
}
Vous pouvez ensuite utiliser ceci comme:
var numberArr = ["#some-input-id", "#another-input-id"];
var emailArr = ["#some-input-id", "#another-input-id"];
inputNumber(numberArr);
inputEmail(emailArr);
C'est assez facile tu. Cela fonctionne très bien.
$('#btn_showHide').on('click', function() {
if($(this).text() == 'Show')
{
$(this).text('Hide');
$('#code').attr('type', 'text');
}
else
{
$(this).text('Show');
$('#code').attr('type', 'password');
}
});
function passShowHide(){
if( $("#YourCheckBoxID").prop('checked') ){
document.getElementById("EnterPass").attributes["type"].value = "text";
}
else{
document.getElementById("EnterPass").attributes["type"].value="password";}