J’essaie de modifier l’action de formulaire en fonction de la valeur sélectionnée dans un menu déroulant.
En gros, le HTML ressemble à ceci:
Si “personnes” est sélectionné (valeur par défaut), l’action doit être “/ search / user” et si le contenu est sélectionné, l’action doit être “/ search / content”.
Je cherche toujours, mais je n’ai pas réussi à savoir comment faire cela.
$("#selectsearch").change(function() { var action = $(this).val() == "people" ? "user" : "content"; $("#search-form").attr("action", "/search/" + action); });
Si vous souhaitez uniquement modifier l’action du formulaire, je préfère modifier l’action lors de la soumission du formulaire, plutôt que lors de la modification de l’entrée. Il ne tire qu’une fois.
$('#search-form').submit(function(){ var formAction = $("#selectsearch").val() == "people" ? "user" : "content"; $("#search-form").attr("action", "/search/" + formAction); });
Il vaut mieux utiliser
$('#search-form').setAtsortingbute('action', '/controllerName/actionName');
plutôt que
$('#search-form').attr('action', '/controllerName/actionName');
Donc, sur la base de la réponse de Trante, nous avons:
$('#search-form').submit(function() { var formAction = $("#selectsearch").val() == "people" ? "user" : "content"; $("#search-form").setAtsortingbute("action", "/search/" + formAction); });
L’utilisation de setAtsortingbute
peut vous faire économiser potentiellement beaucoup de temps.
Est-il nécessaire que vous ayez un formulaire?
Sinon, vous pouvez utiliser ceci:
avec le JavaScript suivant:
function callJavaScriptServlet() { this.form.action = "MyServlet"; this.form.submit(); }