Skip to content

Instantly share code, notes, and snippets.

@goranefbl
Created May 16, 2016 12:10
Show Gist options
  • Save goranefbl/1b6144ee8cd8708c7511a1a2fb7c53a6 to your computer and use it in GitHub Desktop.
Save goranefbl/1b6144ee8cd8708c7511a1a2fb7c53a6 to your computer and use it in GitHub Desktop.
select
/* Input type Select - kreirati neke JS funkcije za reuse
======================= */
var selects = document.getElementsByClassName('input__field--select');
[].forEach.call(selects,function(select){
var docFrag = document.createDocumentFragment(),
mainNode = document.createElement('div'),
span = document.createElement('span'),
ul = document.createElement('ul');
mainNode.className = "gens-select";
ul.className = "gens-dropdown";
mainNode.appendChild(span);
mainNode.appendChild(ul);
select.parentNode.insertBefore(mainNode,null);
for (let i = 0; i < select.length; i++) {
var node = document.createElement("li"),
textnode = document.createTextNode(select[i].value);
node.appendChild(textnode);
node.setAttribute("data-value",select[i].value);
node.addEventListener("click",clickEvent,false);
docFrag.appendChild(node);
if(i == 0) {
span.appendChild(document.createTextNode(select[i].value));
}
};
ul.appendChild(docFrag);
span.addEventListener("click",toggleElements,false);
});
function clickEvent(e) {
var el = e.target,
data = el.getAttribute("data-value"),
select = el.parentNode.parentNode.previousElementSibling;
el.parentNode.previousSibling.innerHTML = data; //span
select.value = data; // select option
el.parentNode.style.display = el.parentNode.style.display == 'block' ? 'none' : 'block';
// If needed selected selected
/*
for(var i=0; i < select.length; i++)
{
if(select.options[i].value == data)
select.selectedIndex = i;
}
*/
}
function toggleElements(e) {
e.target.nextElementSibling.style.display = e.target.nextElementSibling.style.display == 'block' ? 'none' : 'block';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment