javascript - examples - jquery methods
¿Cómo volver a habilitar event.preventDefault? (6)
Con las acciones asíncronas (temporizadores, ajax) puede anular la propiedad isDefaultPrevented
como esto:
$(''a'').click(function(evt){
e.preventDefault();
// in async handler (ajax/timer) do these actions:
setTimeout(function(){
// override prevented flag to prevent jquery from discarding event
evt.isDefaultPrevented = function(){ return false; }
// retrigger with the exactly same event data
$(this).trigger(evt);
}, 1000);
}
Esta es la forma más completa de volver a activar el evento con exactamente los mismos datos.
Tengo una página web en la que he evitado la acción predeterminada en todos los botones de envío. Sin embargo, me gustaría volver a habilitar la acción de envío predeterminada en un botón. ¿Cómo puedo hacer esto?
Actualmente estoy impidiendo la acción predeterminada utilizando lo siguiente:
$("form").bind("submit", function(e){
e.preventDefault();
});
Lo he hecho con éxito usando lo siguiente:
$(document).ready(function(){
$("form:not(''#press'')").bind("submit", function(e){
e.preventDefault();
});
¿Pero puedo hacer esto dinámicamente cuando se hace clic en el botón?
O haces lo que redsquare propone con este código:
function preventDefault(e) {
e.preventDefault();
}
$("form").bind("submit", preventDefault);
// later, now switching back
$("form#foo").unbind("submit", preventDefault);
O bien, asigna un atributo de formulario siempre que se permita el envío. Algo como esto:
function preventDefault(e) {
if (event.currentTarget.allowDefault) {
return;
}
e.preventDefault();
}
$("form").bind("submit", preventDefault);
// later, now allowing submissions on the form
$("form#foo").get(0).allowDefault = true;
Puedes reactivar las acciones añadiendo
this.delegateEvents(); // Re-activates the events for all the buttons
Si lo agrega a la función de renderizado de una vista de backbone js, entonces puede usar event.preventDefault () según sea necesario.
Tendría que desvincular el evento y volver a vincularlo a un evento separado que no evite el defecto o simplemente llamar al evento predeterminado más adelante en el método después de desvincularlo. No hay evento mágico.cancelled = false;
De acuerdo a lo pedido
$(''form'').submit( function(ev){
ev.preventDefault();
//later you decide you want to submit
$(this).unbind(''submit'').submit()
});
function(e){ e.preventDefault();
y su opuesto
function(e){ return true; }
¡aclamaciones!
$(''form'').submit( function(e){
e.preventDefault();
//later you decide you want to submit
$(this).trigger(''submit''); or $(this).trigger(''anyEvent'');