web-dev-qa-db-fra.com

Comment définir une action de formulaire via JavaScript?

J'ai un formulaire HTML dont l'action doit être définie de manière dynamique via JavaScript. Comment fait-on ça? Voici ce que j'essaie de réaliser:

<script type="text/javascript">
function get_action() { // inside script tags
 return form_action;
 }
</script>

<form action=get_action()>
...
</form>
45
umar

Vous ne pouvez pas appeler des fonctions JavaScript dans des attributs HTML standard autres que onXXX. Il suffit de l'affecter pendant le chargement de la fenêtre.

<script type="text/javascript">
    window.onload = function() {
        document.myform.action = get_action();
    }

    function get_action() {
        return form_action;
    }
</script>

<form name="myform">
    ...
</form>

Vous voyez que j'ai donné au formulaire une name, afin qu'il soit facilement accessible dans document.

Sinon, vous pouvez également le faire lors de l'événement submit:

<script type="text/javascript">
    function get_action(form) {
        form.action = form_action;
    }
</script>

<form onsubmit="get_action(this);">
    ...
</form>
63
BalusC

JavaScript simple:

document.getElementById('form_id').action; //Will retrieve it

document.getElementById('form_id').action = "script.php"; //Will set it

Utilisation de jQuery ...

$("#form_id").attr("action"); //Will retrieve it

$("#form_id").attr("action", "/script.php"); //Will set it
54
Rabbott

Solution très simple avec jQuery:

$('#myFormId').attr('action', 'myNewActionTarget.html');

Votre formulaire:

<form action=get_action() id="myFormId">
...
</form>
6
Piyush
document.forms[0].action="http://..."

... en supposant qu'il s'agisse du premier formulaire de la page.

Faites ce que dit Rabbott, ou si vous refusez jQuery:

<script type="text/javascript">
function get_action() { // inside script tags
  return form_action;
}
</script>

<form action="" onsubmit="this.action=get_action();">
...
</form>
1
svinto

En fait, lorsque nous voulons cela, nous voulons changer d’action en fonction du bouton de soumission sur lequel nous appuyons.
Ici, vous n’avez même pas besoin d’affecter name ou id au formulaire. Il suffit d'utiliser la propriété form de l'élément clicked:

<form action = "/default/page" >
    <input type=submit onclick='this.form.action="/this/page";' value="Save">
    <input type=submit onclick='this.form.action="/that/page";' value="Cancel">
</form>
1
Eugen Konkov

Définition d'une action de formulaire après la sélection d'une option à l'aide de JavaScript

<script>
    function onSelectedOption(sel) {
        if ((sel.selectedIndex) == 0) {
            document.getElementById("edit").action =
            "http://www.example.co.uk/index.php";
            document.getElementById("edit").submit();
        }
        else
        {
            document.getElementById("edit").action =
            "http://www.example.co.uk/different.php";
            document.getElementById("edit").submit();
        }
    }
</script>

<form name="edit" id="edit" action="" method="GET">
    <input type="hidden" name="id" value="{ID}" />
</form>

<select name="option" id="option" onchange="onSelectedOption(this);">
    <option name="contactBuyer">Edit item</option>
    <option name="relist">End listing</option>
</select>
0
Michael Stokes