Listes de selection pour champ texte
25 septembre, 2005
Ce script permet d’utiliser des listes de selection pour définir la valeur de champs texte. C’est utile lorsque vous voulez suggérer des valeurs tout en laissant libre choix à l’utilisateur. {{{Usage}}}
Appeler simplement le script dans la page. Tout élément {{select}} ayant une {{id}} de la forme {machinchose_selector} se comportera comme le selecteur de l’élément input ayant l’id {machinchose}.
{{{Dépendance}}}
Nécessite également l’appel de [cssFunctions->1]
{{{code source}}}
/*
this script auto-detect all select fields with class 'selector' and id like something_selector,
associates it with the text field with id 'something' so that onchange value of the select is applied to the text field
http://fredbird.org
License : public domain
*/
// copy value of objectFrom to objectTo
function copyValue(objectFrom,idObjectTo) {
objectTo=document.getElementById(idObjectTo);
if (!objectTo) return false;
objectTo.value=objectFrom.value;
return true;
}
function selectorValueToTarget(selector) {
var reg=new RegExp("(_selector)");
target_id=selector.id.replace(reg,'');
if (targetElement=document.getElementById(target_id)) {
targetElement.value=selector.value;
}
}
function selectorLabelToTarget(selector) {
var reg=new RegExp("(_selector)");
target_id=selector.id.replace(reg,'');
if (targetElement=document.getElementById(target_id)) {
// getting selected option label
// alert(selector.selectedIndex);
option=selector.options[selector.selectedIndex];
// alert (option.text);
targetElement.value=option.text;
}
}
// detects pairs selector // target within a form
function setSelectors(form) {
// value selectors
selects=getElementsByClassName('selector',document,'select');
for (var f=0; f
selector.onchange=function() {selectorValueToTarget(this); return false;}
}
// label selectors
selects=getElementsByClassName('label-selector',document,'select');
for (var f=0; f
selector.onchange=function() {selectorLabelToTarget(this); return false;}
}
}
/* detects all selectors and set their behavior
*/
/*function setSelectors() {
//alert('setSelectors !');
forms=document.getElementsByTagName('form');
for (var f=0; f
}
}*/
// applying to page
if (!window.addEvent) {
function addEvent(obj, evType, fn){
if (obj.addEventListener){
obj.addEventListener(evType, fn, false);
return true;
} else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
} else {
return false;
}
}
}
addEvent(window,'load',setSelectors);
Laisser un Commentaire