Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

320
Visualizações
Pase una variable adicional al enviar un formulario usando jQuery

Tengo un formulario en el que el botón Enviar no se encuentra dentro de las etiquetas <form> . El botón de envío tiene un controlador de click para enviar el formulario a través del evento de submit() de jQuery. Esto funciona perfectamente.

Sin embargo, necesito que el valor del botón Enviar también sea POST. Dado que el botón no existe dentro de las etiquetas <form> , no se incluye en la matriz POST. Por lo tanto, necesito diseñar una forma de pasar una variable adicional cuando se envía el formulario.

Algunas estipulaciones sobre lo que no puede suceder para lograr esto incluyen:

  • El botón Enviar no se puede mover dentro de las etiquetas <form> .
  • No puede usar los métodos jQuery ajax , post o get .
  • No puede tener campos de input ocultos o botones de envío ocultos por CSS.
  • El formulario debe actuar exactamente como si hubiera un botón Enviar normal en el formulario.

Imaginé algo así, pero obviamente esto no funciona.

 $('#admin_form').submit({'variable_name', 'true'});

¿Alguien tiene alguna idea sobre cómo podría lograr esto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Una cosa que podría hacer es usar el atributo onsubmit para que javascript inyecte un campo de publicación en el formulario con el valor del botón de envío justo cuando se envía. Tendría que hacer esto con un campo de entrada oculto, pero solo agregaría el campo de entrada justo después de que el usuario hiciera clic en el botón Enviar, por lo que el campo de entrada no existiría allí desde el principio (esperemos que esto satisfaga sus requisitos ). Entonces algo como:

 function submitHandler() { submitVal = $('#submitButton').val(); $('#myForm').append("<input type='hidden' name='submitValue' value='"+ submitVal+"' />"); return true; }

Lo que se mantendría en el valor adicional justo cuando se hizo clic en el botón.

over 4 years ago · Santiago Trujillo Relatório

0

Esta parece ser una vieja pregunta, pero como me encontré con un problema similar y encontré una buena solución (para mí), pensé en publicarla:

 $('#admin_form').trigger('submit', [ { 'variable_name': true } ]);

o

 $('#admin_form').trigger('submit', [ 'variable_name', 'true' ]);

dependiendo de si desea pasar una variable llamada variable_name con valor true o si desea pasar 2 variables separadas.

Y para que quede claro, esto, por supuesto, no enviará automáticamente variable_name con el resto de los campos del formulario, pero si tiene un controlador de envío, como yo en jQuery, las variables se pasarán como argumentos, después del evento.

over 4 years ago · Santiago Trujillo Relatório

0

La respuesta de Jesse es la única forma de lograr esto a través de POST. También podría agregar la variable al valor de acción del formulario, pero eso sería pasar ese parámetro a través de GET en lugar de POST. Sin una entrada oculta adjunta al formulario antes de permitir la acción predeterminada de "enviar" del navegador, no hay forma de acceder a los datos de publicación sin procesar de la solicitud HTTP antes de que se envíe; es un dilema de la gallina antes del huevo: lo que está La intención de hacer es cambiar los datos/encabezados HTTP POST que se envían a la página siguiente, pero la única forma en que los datos existen antes de que el navegador publique los datos en la página siguiente es tener las etiquetas de entrada incrustadas dentro del elemento de formulario.

Una solución alternativa con la que podría optar sería utilizar la función $.post() para enviar los datos que desee a través de la publicación durante el controlador onsubmit, y en el controlador de éxito redirigir a la página que desea. Sé que esto no va de acuerdo con las reglas anteriores, pero no obstante es otra posible solución a un problema.

Sin embargo, si quieres volverte realmente loco y seguir todas tus reglas, también puedes:

  1. "clonar" una versión oculta del formulario al DOM
  2. inyectar el botón de enviar en el formulario
  3. active un evento de clic en el botón de envío inyectado en el formulario clonado.
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda