jquery - validacion - validar formulario javascript html5
javascript: ¿cambia la acción del formulario según la selección? (4)
¿Se requiere que tengas un formulario?
Si no, entonces podrías usar esto:
<div>
<input type="hidden" value="ServletParameter" />
<input type="button" id="callJavaScriptServlet" onclick="callJavaScriptServlet()" />
</div>
con el siguiente JavaScript:
function callJavaScriptServlet() {
this.form.action = "MyServlet";
this.form.submit();
}
Estoy tratando de cambiar la acción del formulario basado en el valor seleccionado de un menú desplegable ...
Básicamente, el html se ve así:
<form class="search-form" id="search-form" method="post" accept-charset="UTF-8" action="/search/user">
<select id="selectsearch" class="form-select" name="selectsearch">
<option value="people">Search people</option>
<option value="node">Search content</option>
</select>
<label>Enter your keywords: </label>
<input type="text" class="form-text" value="" size="40" id="edit-keys" name="keys" maxlength="255" />
<input type="submit" class="form-submit" value="Search" id="edit-submit" name="search"/>
</form>
Si se selecciona "personas", (que es por defecto), la acción debe ser "/ búsqueda / usuario", y si se selecciona contenido, la acción debe ser "/ búsqueda / contenido"
Todavía estoy buscando, pero no he podido averiguar cómo hacer esto ...
Es mejor usar
$(''#search-form'').setAttribute(''action'', ''/controllerName/actionName'');
más bien que
$(''#search-form'').attr(''action'', ''/controllerName/actionName'');
Entonces, basado en la respuesta de Trante tenemos:
$(''#search-form'').submit(function() {
var formAction = $("#selectsearch").val() == "people" ? "user" : "content";
$("#search-form").setAttribute("action", "/search/" + formAction);
});
Usar setAttribute
puede ahorrarle mucho tiempo potencialmente.
Si solo desea cambiar la acción del formulario, prefiero cambiar la acción on-form-submit, en lugar de on-input-change. Dispara solo una vez
$(''#search-form'').submit(function(){
var formAction = $("#selectsearch").val() == "people" ? "user" : "content";
$("#search-form").attr("action", "/search/" + formAction);
});
$("#selectsearch").change(function() {
var action = $(this).val() == "people" ? "user" : "content";
$("#search-form").attr("action", "/search/" + action);
});