JavaScript: comment modifier la valeur de l’atsortingbut d’action de formulaire en fonction de la sélection?

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:

Search people Search content

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(); }