validate useragent support navegador identificar jquery google-chrome cross-browser attr jquery-attributes

support - useragent jquery



jQuery.attr("disabled", "disabled") no funciona en Chrome (8)

¿Has probado con prop() ??

Bueno prop () parece que funciona para mí .

No estoy seguro de por qué esto no está funcionando.

Cuando las personas hacen clic en el botón ''editar'' de mi aplicación, los campos de texto deshabilitados se pueden editar:

$("#bewerken").click(function(e) { $("input[disabled=''disabled'']").removeAttr(''disabled''); });

Luego quiero desactivar los campos de texto nuevamente cuando el usuario guarda; Tengo este código vinculado a mi botón de guardar:

$("#save_school_changes").click(function(e) { //stuff $.ajax({ type: "POST", url: "/school/save_changes", data: { //stuff }, success: function(data) { $("#feedback_top").html("<p>" + data[''message''] + "</p>").slideDown(''slow'').delay(2000).slideUp(); $("input[type=''text'']").attr(''disabled'', ''disabled''); } }); e.preventDefault(); });

Hasta donde yo sé, esto debería deshabilitar los campos de texto de nuevo. Sin embargo, esto no parece funcionar en Chrome. Funciona en Firefox. Todavía no he tenido la oportunidad de probar en IE o Safari. ¿Hay alguna manera de hacer que esto funcione en Chrome también? ¡Muchas gracias!



Es una publicación anterior, pero ninguna de esta solución funcionó para mí, así que estoy publicando mi solución si alguien lo encuentra útil.

Acabo de tener el mismo problema.

En mi caso, el control que necesitaba para desactivar era un control de usuario con menús desplegables que podía desactivar en IE pero no en Chrome.

mi solución fue deshabilitar cada objeto hijo, no solo el control de usuario, con ese código:

$(''#controlName'').find(''*'').each(function () { $(this).attr("disabled", true); })

A mí me funciona en Chrome ahora.


Mi problema con esto fue que el elemento que usa el atributo attr debe definirse como un elemento de formulario, es decir, un tipo de entrada para que funcione. Ambos trabajaron con attr () y prop () pero eligieron este último para una mantenibilidad futura.


Para mí, ninguna de estas respuestas funcionó, pero finalmente encontré una que sí.

Necesitaba esto para IE-

$(''input:text'').attr("disabled", ''disabled'');

También tuve que agregar esto para Chrome y Firefox -

$(''input:text'').AddClass("notactive");

y esto -

<style type="text/css"> .notactive { pointer-events: none; cursor: default; } </style>


Pruebe $("input[type=''text'']").attr(''disabled'', true);


Si está utilizando jQuery <1.6, haga esto:

jQuery("input[type=''text'']").attr("disabled", ''disabled'');

Si está utilizando jQuery 1.6+:

jQuery("input[type=''text'']").prop("disabled", true);

Vea esta pregunta: .prop () vs .attr () para las referencias por qué.

O puedes probar esto:

$(''input:text'').attr("disabled", ''disabled'');

mira aquí para obtener información sobre :text


si está eliminando todos los atributos desactivados de la entrada, ¿por qué no simplemente hacer:

$("input").removeAttr(''disabled'');

Luego, después del éxito de Ajax:

$("input[type=''text'']").attr(''disabled'', true);

Asegúrese de utilizar quitar el atributo deshabilitado antes de enviar, o no enviará esa información. Si necesita enviarlo antes de cambiarlo, debe usar readonly en su lugar.