2011-04-21 15 views
6

Tengo un formulario simple que se puede enviar fuera del elemento a través de un pequeño jQuery Script.jQuery enviar no funciona en Opera

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#mybutton').click(function(){ 
      $('#myform').attr('action', '/url/to/form').submit(); 
     }); 
    }); 
</script> 

El botón es sólo un enlace normal

<a href="javascript:void(0);" id="mybutton">Just a normal link</a> 

La forma es sólo una forma normal

<form id="myform" action="/url/to/form"> 
    .... 
    <input type="submit" value="Search"> 
</form> 

Esto funciona bien en IE, FF, Chrome y Safari, pero no para Ópera. En Opera siempre redirige a mi página de inicio, no a la url de la acción de formulario. Intenté configurar la acción en el script (como se muestra arriba) y normalmente dentro del parámetro de acción de formulario, pero sin suerte. Estoy ejecutando el último jQuery y Opera.

Por favor, ayuda

Editar: También estoy usando el marco jQuery UI para manejar algunos de los contenidos y las interacciones

+0

Hola, al parecer Opera quiere saber qué tipo de página de destino desea abordar. ¿Has intentado enviar el formulario de forma HTML normal? Si es así, ¿funcionó? – reporter

+0

¿Cuál es su código html para el #mybutton? –

+0

¿Cómo se ve el marcado del botón? ¿Está dentro de la forma? – Pointy

Respuesta

1

Creo que tendrá algo que ver con, con la clase de selección de jquery ui actualmente incompleta. Agrega una etiqueta con un href como #. Creo que este puede ser tu problema.

+0

He echado un vistazo a la clase de UI y sí, usa # en el href. Esto parece redirigir la página en el envío por alguna razón. Al cambiar esto, el script jQuery UI lo detiene. Gracias – bpneal

1

primero que quiero hacer es cambiar el controlador para evitar que la acción predeterminada para el enlace :

$('#mybutton').click(function(ev){ 
     ev.preventDefault(); 
     $('#myform').attr('action', '/url/to/form').submit(); 
    }); 

Usando <a> etiquetas para los botones significa que usted tiene que tener cuidado de que el navegador no se confunda sobre la semántica. No tengo mucha experiencia depurando cosas en Opera, pero eso es lo primero que sospecho.

Si no hay un "href" real asociado con el "botón", me preguntaría por qué es una etiqueta <a> en absoluto; podría ser simplemente un simple <span>, que también puede tener un controlador de clic conectado pero que no tiene ningún comportamiento nativo potencialmente problemático.

0

Intentar apenas $('#myform').submit(); en lugar de $('#myform').attr('action', '/url/to/form').submit();

Edit: Como dijo la otra respuesta, primero tendrá que llamar event.preventDefault(); antes de hacer cualquier cosa en el evento click, como que evita que el navegador los redireccionamientos.

Edit2: El código correcto sería:

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#mybutton').click(function(event){ 
     event.preventDefault(); 
     $('#myform').attr('action', '/url/to/form').submit(); 
    }); 
}); 

Esto debería funcionar bien.

+0

la acción del formulario probablemente está sujeta a cambios – Zebra

+0

@dany: Entendido, cambió la respuesta, que de todos modos era incorrecta. –

+0

La etiqueta a era más un ejemplo que una elección de diseño. Lo cambié a un lapso e incluí el comando preventDefault, pero sigo teniendo el mismo problema. – bpneal