eventos de jQuery.preventDefault() no funciona en Firefox (JSFiddle incluido)


Este es un tipo de duplicado similar a algunos otros aquí, pero creo que estoy usando event.preventDefault() correctamente en este caso.

Aquí hay un JSFiddle con el que puedes ver el código: http://jsfiddle.net/SeEw2/2 /

Básicamente, haga clic en el botón Enviar.

En Chrome: No pasa nada-respuesta correcta.

En Firefox : Recargas de página, oh noes!

Entonces, ¿por qué se recarga la página en Firefox y no en Chrome? Lo he estado atacando y no hay errores arriba en cualquiera...

Author: Brian Webster, 2011-01-03

5 answers

La variable event en su código no se inicializa.

Http://jsfiddle.net/SeEw2/4 /

Extracto:

 $('#ajaxsearch').click(function(event) {

        // Stop the Search input reloading the page by preventing its default action
        event.preventDefault();
 97
Author: Shikiryu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-03 16:02:28

Ah he tenido un problema similar en ese pasado. En lugar de evento.preventDefault () intenta pasar el evento a:

    function ie8SafePreventEvent(e){
    if(e.preventDefault){ e.preventDefault()}
    else{e.stop()};

    e.returnValue = false;
    e.stopPropagation();        
}

Sé que dice IE, pero nunca he tenido un problema con él desde=]

 8
Author: Dartoxian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-03 16:03:05

Porque no pasas el objeto event como function(event), pero mi pregunta es ¿por qué incluso pasar por todo esto cuando puedes hacer que type="button" y onclick pasen los valores? En esencia que lo que está haciendo con todo este proceso.

 1
Author: Babiker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-03 16:02:38

En lugar de buscar un evento de clic en el botón enviar, por qué no utilizar el form(formulario).submit handler?

Mientras tenga 'return false' al final del controlador, la página no se recargará.

 1
Author: CamelBlues,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-03 16:09:13

Lo resolví de esta manera, debido a que mi código es un poco diferente, esto puede ser útil para otras personas. Mi código inicial se veía así.

<form id="enrollstudentform" onsubmit="return enrollStudents()">
    ...
</form>

Mi función js se parecía a

function enrollStudents() {
    // Stop Form.
    event.preventDefault();
    // Other code
}

Tuve que pase el evento de parámetro en la llamada a la función y recíbalo en la función.

<form id="enrollstudentform" onsubmit="return enrollStudents(event)">
    ...
</form>

Código Js:

function enrollStudents(event) {
    // Stop Form.
    event.preventDefault();
    // Other code
}

Espero que ayude.

 0
Author: Andres Ramos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-19 17:17:38