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>
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>
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
Solution très simple avec jQuery:
$('#myFormId').attr('action', 'myNewActionTarget.html');
Votre formulaire:
<form action=get_action() id="myFormId">
...
</form>
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>
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>
<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>