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=selects[f];
selector.onchange=function() {selectorValueToTarget(this); return false;}
}
// label selectors
selects=getElementsByClassName('label-selector',document,'select');
for (var f=0; f selector=selects[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 pairs=detectFormSelectors(forms[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

RSS | XHTML | CSS