Tengo 2 formularios GET para filtrar datos, cuando envío el primer formulario tengo esta url test.com?form1_filter['year']=2022
Funciona, pero ahora, si quiero enviar el otro formulario, me gustaría tener test.com?form2_filter['users']&form1_filter['year']=2022
El problema es que cuando envío un formulario, se eliminaron los parámetros del segundo formulario.
¿Cómo puedo mantener todos los parámetros en url? Probé en javascript con el envío del evento cuando aún eliminaba mis parámetros.
<form id="form1" method="get"> <div> <label for="name">Enter your name: </label> <input type="text" name="name" id="name" required> </div> <div> <label for="email">Enter your email: </label> <input type="email" name="email" id="email" required> </div> <div> <input type="submit" value="Filter"> </div> </form> <form id="form2" method="get"> <select name="users" id="user-select"> <option value="1">Dad</option> <option value="2">Mom</option> </select> <div> <input type="submit" value="Filter"> </div> </form>Son 2 formularios en la misma página.
El formulario debe tener entradas para todos los datos que desea que aparezcan en la cadena de consulta.
Si desea copiar valores existentes sin mostrar un control de IU para ellos, agréguelos como entradas ocultas.
<input type="hidden" name="form1_filter['year']" value="2022">Cuando tiene dos formularios en la página que se cargaron con una cadena de consulta de URL, el formulario recién enviado reemplaza todos los parámetros.
La solución es simple: agregue campos hidden al formulario de forma dinámica (usando el código del lado del servidor) que agregará los parámetros nuevamente a la URL.
<input type=hidden name=field-name value=field-value>También puedes hacerlo usando JS (no recomendado).
Probablemente, la mejor solución sea redirigir todas las solicitudes a otra URL que no use los parámetros de la cadena de consulta. Cuando se agrega una cadena de consulta a esta URL, también rediríjala (a la URL que combina ambas). Ejemplo:
/foo?field1=bar → /foo/field1=bar /foo/field1=bar?field2=baz → /foo/field1=bar,field2=bazEl único inconveniente de este enfoque es que es más complejo en el lado del servidor.