J'ai une fonction JavaScript générique qui prend un paramètre
function foo(val) { ...}
et je veux appeler la fonction lorsque je soumets un formulaire
<form>
<input type="text" id="formValueId"/>
<input type="button" onclick="foo(this.formValueId)"/>
</form>
mais l'expression foo (this.formValueId) ne fonctionne pas (pas surpris, c'était une tentative désespérée), donc la question est, comment puis-je transmettre une valeur de formulaire à la fonction javascript. Comme je l'ai mentionné, le javascript est générique et je ne veux pas manipuler le formulaire qu'il contient!
Je pouvais créer une fonction d'aide au milieu pour obtenir les valeurs du formulaire avec jQuery (par exemple), puis appeler la fonction mais je me demandais si je pouvais le faire sans la fonction d'aide.
Il pourrait être plus propre de retirer votre gestionnaire de clics en ligne et de le faire comme ceci:
$(document).ready(function() {
$('#button-id').click(function() {
foo($('#formValueId').val());
});
});
Donnez à vos entrées des noms, cela vous facilitera la tâche
<form>
<input type="text" id="formValueId" name="valueId"/>
<input type="button" onclick="foo(this.form.valueId.value)"/>
</form>
MISE À JOUR:
Si vous donnez à votre bouton un identifiant, les choses peuvent être encore plus faciles:
<form>
<input type="text" id="formValueId" name="valueId"/>
<input type="button" id="theButton"/>
</form>
Javascript:
var button = document.getElementById("theButton"),
value = button.form.valueId.value;
button.onclick = function() {
foo(value);
}
Utilisez onclick="foo(document.getElementById('formValueId').value)"
Il existe plusieurs façons d'aborder cela. Personnellement, je voudrais éviter les scripts en ligne . Puisque vous avez marqué jQuery, utilisons-le.
HTML:
<form>
<input type="text" id="formValueId" name="valueId"/>
<input type="button" id="myButton" />
</form>
JavaScript:
$(document).ready(function() {
$('#myButton').click(function() {
foo($('#formValueId').val());
});
});
Eh bien, vous pouvez le faire de cette façon.
<input type="text" name="address" id="address">
<div id="map_canvas" style="width: 500px; height: 300px"></div>
<input type="button" onclick="showAddress(address.value)" value="ShowMap"/>
Java Script
function showAddress(address){
alert("This is address :"+address)
}
C'est un exemple pour le même. et cela fonctionnera.
Approche plus stable:
<form onsubmit="foo($("#formValueId").val());return false;">
<input type="text" id="formValueId"/>
<input type="submit" value="Text on the button"/>
</form>
Le return false;
sert à empêcher l'envoi du formulaire (en supposant que vous le vouliez).