2010-08-20 18 views
14

quiero usar jQuery para presentar mi forma y que pueda hacer que al igual queAjuste someter valor en jQuery presento

$('#myform_id').submit(); 

y eso es todo bueno, pero normalmente alguien hace clic en un botón de envío que el botón de envío tiene un valor así que cuando hago el envío a través de jQuery también necesito establecer un valor de envío ¿cómo lo hago?

como señaló algunas respuestas que podía hacer esto mediante la simulación de un clic del usuario, pero no quiero hacer eso quiero pasar el valor presente cuando se utiliza el comando EDIT .submit() si eso es posible

en última instancia, el presentar utilizando el formulario ajax

** ** Aclaración

bien así que tengo la configuración jQuery para usar validar jQuery y tiene un manejador de presentar como tal

$("#myform_id").validate({ 
    submitHandler: function() { 
     run_ajax(obj); 
    } 
}); 

entonces que llama a la función I Me llamo paso run_ajax y el objeto que contiene información sobre qué tipo de Ajax que quiero y lo que sea.

y en última instancia se ejecuta este

obj.formitem.ajaxSubmit({ 
    dataType:'json', 
    data: obj.pdata, 
}); 

donde

obj.formitem == $('#myform_id'); 

por lo que cuando la forma es enviar todo lo que sucede todo bien.

así que cargar la página con esta forma en diálogo jQuery y yo quiero que sean capaces de hacer clic en un botón en el cuadro de diálogo que desencadena la forma presente y también le dice a la forma qué tipo de envías se ha solicitado

con suerte esto es claro ahora lo siento por la confusión

+0

cuyo funcionamiento es disparadores la presentación normal de la forma. Si el valor no viene, tal vez debería desencadenar el evento click del botón de enviar en su lugar. Gran parte del tiempo con jQuery, se utilizan las funciones de publicación $ .ajax/$. Get/$., En lugar de un envío de formulario normal que navega a una página nueva. – Fosco

Respuesta

11

una forma rápida sería $('#myform_id #submitButtonID').click();

+3

no quiero simular un clic pero gracias – mcgrailm

+3

a pesar de no querer hacerlo de esta manera esto es lo que terminé haciendo – mcgrailm

0

se puede añadir un botón de Submit a su forma y emular un clic en el botón. No resuelve tu propósito.

+0

no quiero simular un clic pero gracias – mcgrailm

0

Esto debe hacer el truco:

$('#form_id #submitbutton_id').val('your value'); 
+0

pero el punto es que quiero hacer caso omiso de los botones como si no, donde no hay botones – mcgrailm

2

.submit() le dará el tradicional sostienen que sucede de POST/GET con la actualización de la página.

para el Ajax, que tendrá que utilizar $ .post, .get $ o $ .ajax - por ejemplo:

var aaa = $("#your_form").serialize(); 
$.post("your_url",aaa,function(response){/*do something*/},"json"); 

En lo que se refiere a clic de los botones, si tiene varios botones que puede enviar una forma. Puede usar campos ocultos como parte del formulario. Antes de enviar el formulario, cambie el campo oculto según el botón que se presionó.

$(".submit_buttons").click(function(){ 

$("#my_hidden_input").val($(this).attr("rel")); 

/* 
above serialize and ajax post code 
*/ 

}); 

HTML:

<input type="button" class="submit_buttons" rel="special_button1" value="Button 1"/> 
<input type="hidden" id="my_hidden_input" /> 

Cuando uso este plugin de validación, así es como puedo hacerlo.

$("#right_form").validate(); //To add validation to the form 

validate9 = $("#right_form").validate().form(); //Check if the form validates 

A continuación, utilice if para comprobar validate9 es true y presentar usando $.post().

ajax normal es bastante sencillo.

Algunas razones por las que creo que probablemente está usando iframe para enviar el formulario:
) Su tiene que ser hecho de esta manera (algún requisito inmutable).
) que desea cargar algunos archivos usando ajax.

Ref: JS iframe limitations.

No estoy seguro si esto ayuda, pero, si usted resolver esto por favor enviar una respuesta para hacernos saber cómo se hizo cargo de este.

+0

nop no es lo que estoy buscando, ya sea que sé cómo usar ajax haciendo ya que voy a editar mi post supongo que tengo que añadir más detalles – mcgrailm

+0

leer la edición, parece complicado, todavía no puedo entender lo que está pasando. – DMin

+0

Estoy pensando que no hay una manera de hacer esto, lo que se reduce a que no quiero simular un clic del mouse. Quiero adjuntar una clave: valor a la acción de enviar cuando ejecuto .submit() pero No quiero simular ni manipular el dom. Podría hacerlo fácilmente agregando a mi propiedad obj.data, pero como se ejecuta desde la carga de iframe js y el diálogo de jquery está en el elemento primario, no puedo configurarlo de esa manera, así que estaba esperando poder pasarlo en la llamada .submit() ... seguir? – mcgrailm

1

valor de enviar es simplemente pasa como parámetro. Por lo tanto, si tiene:

<input type="submit" name="mysubmit" value="click"/> 

, la solicitud contendrá un parámetro de solicitud mysubmit = click.

Entonces sólo tiene que añadir un tipo de entrada oculta de esta manera:

<input type="hidden" name="mysubmit" value="click"/> 
2
$('#myform').submit(function(event){ 
     /* stop form from submitting normally */ 
     event.preventDefault(); 

     // get form data and include value from submit button 
     var post_data = form.serializeArray(); 
     post_data.push({name: event.originalEvent.explicitOriginalTarget.name, 
         value: event.originalEvent.explicitOriginalTarget.value 
        }); 

     // ... 
    } 
14

https://stackoverflow.com/a/993897/215887 trabajó para mí

Bueno, en realidad lo hice de esta manera:

$('<input />').attr('type', 'hidden') 
       .attr('name', 'myButton') 
       .attr('value', 'MyButton') 
       .appendTo('#my-form'); 
$('#my-form').submit(); 
Cuestiones relacionadas