tratando de cambiar el atributo de tipo input
de password
a text
.tipo de entrada de cambio de jQuery
$('.form').find('input:password').attr({type:"text"});
¿Por qué esto no funciona?
tratando de cambiar el atributo de tipo input
de password
a text
.tipo de entrada de cambio de jQuery
$('.form').find('input:password').attr({type:"text"});
¿Por qué esto no funciona?
No se puede hacer esto con jQuery, it explicitly forbids it porque el IE no lo soporta (comprobar su consola verá un error.
usted tiene que quitar la entrada y crear uno nuevo si eso es lo que está buscando, por ejemplo:
$('.form').find('input:password').each(function() {
$("<input type='text' />").attr({ name: this.name, value: this.value }).insertBefore(this);
}).remove();
ser claro en la restricción, jQuery no permitirá cambiar type
en un <button>
o <input>
por lo º El comportamiento es consistente en todos los navegadores (dado que IE no lo permite, decidieron que no se permite en todas partes). Al intentar que obtendrá este error en la consola:
Error: type property can't be changed
maldito, encantador IE – James
bah, llévame a eso :-) –
@Andy - ¿No te confunde con tu cuerpo aquí y tu cabeza en meta? :) –
mi solución:
$('#myinput').clone().attr('type','tel').insertAfter('#myinput').prev().remove();
muy elegante y simple :) –
Buena solución, aunque según la respuesta aceptada, es problemático si tiene eventos conectados a la entrada original, que también se eliminan ... – terraling
¿Cómo funciona '.attr()' en el elemento clonado pero no en el elemento en sí? –
Sé que soy un poco tarde para el juego, pero yo era capaz de hacer esto en IE9 (parece que Microsoft decidió permitirlo?). Sin embargo, tuve que hacerlo con JavaScript directo. Esto es solo una muestra de un formulario con una lista desplegable que cambia el tipo de campo dependiendo de lo que se seleccione en el menú desplegable.
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();
Me gusta esta solución porque no destruir las entradas originales deja intactos los eventos adjuntos ... – terraling
Éstos son dos funciones, la aceptación de una serie de selector (s) como un parámetro que va a lograr esto:
// 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();
}
}
}
}
A continuación, puede utilizar esto como:
var numberArr = ["#some-input-id", "#another-input-id"];
var emailArr = ["#some-input-id", "#another-input-id"];
inputNumber(numberArr);
inputEmail(emailArr);
Este debería funcionar facilmente
$("selector").attr('type', 'hidden');
//Changing it to hidden
USO prop
lugar 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";}
Esto realmente no responde la pregunta. La pregunta es cómo cambiar el ** tipo **, y este código cambia el ** valor **, e incluso lo hace mal. Esta * podría * ser una respuesta adecuada para una pregunta completamente diferente, pero no para esta pregunta. –
Esto es bastante fácil tú. Esto funciona bastante 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');
}
});
Fyi, puede usar '.attr ('attrname', 'newvalue')' para establecer un solo atributo. – ThiefMaster
Duplicado de http://stackoverflow.com/questions/1544317/jquery-change-type-of-input-field – thisgeek
@thisgeek Estoy realmente impresionado de que hayas publicado un enlace duplicado para una pregunta con más de dos años de antigüedad. pregunta de hace tres años. – MiniRagnarok