Provare a modificare l'attributo input
da password
a text
.jQuery change input type
$('.form').find('input:password').attr({type:"text"});
Perché questo non funziona?
Provare a modificare l'attributo input
da password
a text
.jQuery change input type
$('.form').find('input:password').attr({type:"text"});
Perché questo non funziona?
Non si può fare questo con jQuery, it explicitly forbids it perché IE non lo supporta (controllare la console verrà visualizzato un errore.
È necessario rimuovere l'ingresso e crearne uno nuovo se è quello che che stai dopo, per esempio:
$('.form').find('input:password').each(function() {
$("<input type='text' />").attr({ name: this.name, value: this.value }).insertBefore(this);
}).remove();
per essere chiari, sulla restrizione, jQuery non consentirà la modifica type
su un <button>
o <input>
così esimo Il comportamento è coerente con il browser (poiché IE non lo consente, ha deciso che non è consentito in tutto il mondo). Quando si cerca si otterrà questo errore nella console:
Error: type property can't be changed
dannazione, adorabile IE – James
bah, bastonatemi :-) –
@Andy - Non ti confonda con il tuo corpo qui e la tua testa su meta? :) –
la mia soluzione:
$('#myinput').clone().attr('type','tel').insertAfter('#myinput').prev().remove();
molto elegante e semplice :) –
Bella soluzione, anche se secondo la risposta accettata, problematica se si hanno eventi collegati all'ingresso originale, che vengono rimossi anche ... – terraling
Come funziona '.attr()' sull'elemento clonato ma non sull'elemento stesso? –
So di essere un po 'tardi per il gioco, ma ero solo in grado di fare questo in IE9 (sembra che Microsoft abbia deciso di permetterlo?). Tuttavia, ho dovuto farlo con JavaScript dritto. Questo è solo un esempio di un modulo con un elenco a discesa che cambia il tipo di campo in base a ciò che è selezionato nel menu a discesa.
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();
Mi piace questa soluzione perché non distruggere gli input originali lascia intatti tutti gli eventi collegati ... – terraling
Qui sono due funzioni, che accetta un array di selettore (s) come parametro che compirà questo:
// 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();
}
}
}
}
È possibile quindi utilizzare questo tipo:
var numberArr = ["#some-input-id", "#another-input-id"];
var emailArr = ["#some-input-id", "#another-input-id"];
inputNumber(numberArr);
inputEmail(emailArr);
Questo dovrebbe funzionare facilmente
$("selector").attr('type', 'hidden');
//Changing it to hidden
USO prop
invece attr
$('.form').find('input:password').prop({type:"text"});
function passShowHide(){
if($("#YourCheckBoxID").prop('checked')){
document.getElementById("EnterPass").attributes["type"].value = "text";
}
else{
document.getElementById("EnterPass").attributes["type"].value="password";}
Questo in realtà non risponde alla domanda. La domanda è come cambiare il ** tipo **, e questo codice cambia il ** valore **, e lo fa anche male. Questa * potrebbe * essere una risposta adatta per una domanda completamente diversa, ma non per questa domanda. –
Questo è abbastanza facile tu. Funziona abbastanza bene.
$('#btn_showHide').on('click', function() {
if($(this).text() == 'Show')
{
$(this).text('Hide');
$('#code').attr('type', 'text');
}
else
{
$(this).text('Show');
$('#code').attr('type', 'password');
}
});
Fyi, è possibile utilizzare '.attr ('attrname', 'newvalue')' per impostare un singolo attributo. – ThiefMaster
Duplicato di http://stackoverflow.com/questions/1544317/jquery-change-type-of-input-field – thisgeek
@thisgeek Sono sinceramente colpito dal fatto che tu abbia postato un link duplicato per una domanda di più di due anni con un domanda di tre anni fa. – MiniRagnarok