Estoy tratando de editar el evento ‘onchange’ de un elemento ‘select‘ existente.
Por ejemplo, tengo el siguiente código:
y cada vez que trato de cambiar su atributo ‘onchange’ estaba usando lo siguiente:
$("#sel_id").attr("onchange", "foo_2()");
FYI, este código que debería estar bien no funciona, el atributo ‘onchange’ permanece sin cambios. Entonces, ¿cómo debería editarlo?
ENMIENDA:
Puede eliminar el atributo y luego enlazar una función diferente como:
$("#sel_id").removeAttr("onchange").bind("change", function(){ foo_2(); });
pero el problema persiste, ¿es posible cambiar el atributo ‘onchange’ sin eliminarlo en primer lugar?
No es una respuesta exacta a la pregunta, pero probablemente eliminaría el evento usando esto:
document.getElementById('sel_id').onchange = undefined;
(como se ve en Cómo borrar / eliminar el controlador de eventos de JavaScript? )
y luego ve con esto:
$('#sel_id').change(function() { foo_2(); });
Funciona para mí si uso el setAttribute()
nativo setAttribute()
.
Además, recuerde que necesita cotizaciones alrededor del selector.
$("#sel_id")[0].setAttribute("onchange", "foo_2()");
Recuerde también definir foo_2
en el espacio de nombres global, y no dentro de la función .ready()
jQuery.
Use la función de cambio de JQuery.
$ ('# sel_id'). change (function () { //tu codigo });
Aquí hay una manera de hacerlo usando solo javascript: