2009-08-14 14 views
37

¿Cómo pasar un objeto de evento a una función en Javascript?

function check_me() { 
    //event.preventDefault(); 
    var hello = document.myForm.username.value; 
    var err = ''; 

    if(hello == '' || hello == null) { 
    err = 'User name required'; 
    } 

    if(err != '') { 
    alert(err); 
    $('username').focus(); 
    return false; 
    } else { 
    return true; } 
} 

En Firefox, cuando intento de presentar un valor vacío que arroja el error y establece el foco de nuevo a elemento. Pero lo mismo no sucede en IE, ya que arroja un error y luego de hacer clic en Aceptar y publicar el formulario (devuelve verdadero).

¿Cómo puedo evitar esto? Estaba pensando en evitar esto usando event.preventDefault(), pero no estoy seguro de cómo hacerlo con este método. Intenté pasar checkme (evento) ... pero no funcionó. Estoy usando Prototype js.

(sé cómo pasar un evento cuando Ato una función en javascript .click .. en lugar de llamar onclick dentro html .. usando jQuery, pero tengo que depurar este trozo de código)

Respuesta

20

toma de Trata onclick la utilización JS 'retorno' para asegurar el valor de retorno deseada se acostumbra ...

<button type="button" value="click me" onclick="return check_me();" /> 
+0

no es exactamente lo que estaba buscando ... pero lo marcaré como respondí. Gracias. – TigerTiger

+0

Esto funcionó para mí. ¡Gracias! – apebeast

127
  1. modificar la definición de la función que check_me ::

    function check_me(ev) { 
    
  2. Ahora se puede acceder a los métodos y parámetros del evento ::

    ev.preventDefault(); 
    
  3. Entonces, usted tiene que pasar el parámetro en el onclick en la llamada línea ::

    <button type="button" onclick="check_me(event);">Click Me!</button> 
    

A useful link para comprender esto.


ejemplo completo:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <script type="text/javascript"> 
     function check_me(ev) { 
     ev.preventDefault(); 
     alert("Hello World!") 
     } 
    </script> 
    </head> 
    <body> 
    <button type="button" onclick="check_me(event);">Click Me!</button> 
    </body> 
</html> 
+0

gracias toto_tico ... Seguro que me ayudó a ahorrar algunas horas. –

-1

que cambiaría su unión a ser:

<button type="button" value="click me" onclick="check_me" /> 

que sería entonces cambiar su declaración check_me() función a ser:

function check_me() { 
    //event.preventDefault(); 
    var hello = document.myForm.username.value; 
    var err = ''; 

    if(hello == '' || hello == null) { 
    err = 'User name required'; 
    } 

    if(err != '') { 
    alert(err); 
    $('username').focus(); 
    event.preventDefault(); 
    } else { 
    return true; } 
} 
+0

No se puede simplemente asumir que se define "evento". Su código me da este error de tiempo de ejecución: "ReferenceError: event no está definido". Código de muestra: function awesome() {console.info (event); } increíble(); – HoldOffHunger

Cuestiones relacionadas