mars
2008
Classiquement, on récupère la valeur de boutons radios HTML grâce à une balise FORM incorporant l’attribut action pointant sur un script php :
<form action ="script.php" >
<input type="radio" name="radioGroup" id="radio" value="LEAVE_IT" />Leave It
<input type="radio" name="radioGroup" id="radio2" value="TAKE_IT" /> Take It
<input type="button" value="OK" /></form>
Cette astuce du jour a pour but de récupérer le bouton radio en Javascript, avec la bibliothèque Prototype, sans script php, ni même la balise form.
En Ajax, on veut éviter le plus souvent possible l’action sur les balises FORM. Même si l’action est nulle : <form action ="" >, alors le navigateur affiche une nouvelle url : http://mypage?Submit=OK, par exemple. On peut utiliser un bouton de type « button » ou « submit » utilisant l’attribut onclick= »doIt(); »
La fonction javascript doIt() pourra alors récupérer la valeur du bouton radio avec cette fonction qui ne nécessite que l’attribut name du groupe de boutons radio :
/**
* Returns the value of the selected radio button in the radio group
* returns "" if the radio is not found or if nothing is checked
* Public Domain
*/
function $RF(radioName){
array=$$('input');
var value="";
array.each(
function (radio){
if (radio.hasAttribute("name") && radio.readAttribute("name")==radioName)
if (radio.checked=="true" || radio.checked) value=radio.getValue();
}
);//End of each()
return value;
}
Le nom de la fonction est dans le plus (im)pur style Prototype, RF signifiant RadioForm.
On l’utilisera ainsi :
function doIt(){
alert($RF("radioGroup"));
}