estoy buscando ayuda con un select al cual se le a dado un estilo pero este no me modifica el elemento seleccionado.
Código HTML:
<form method="post" action="http://www.myweb.co/"> <input name="languaje" value="es" type="hidden"> <bdo dir="ltr" lang="es"> <label for="lang">Lenguaje: </label> </bdo> <div name="lang" class="custom-select autosubmit" dir="ltr" id="lang" lang="es"> <select name="lang" class="autosubmit" dir="ltr" id="lang" placeholder="Español" lang="es"> <option value="pt">Português</option> <option value="en">English</option> <option value="fr">Français</option> <option value="it">Italiano</option> <option value="es" selected="selected">Español</option> </select> <div class="select-selected">Français</div> <div class="select-items select-hide"> <div>Português</div> <div>English</div> <div class="same-as-selected">Français</div> <div>Italiano</div> <div>Español</div> </div> </div> </form>
en el código anterior se selecciona el elemento deseado y este se muestra correctamente tanto en el select del html como en el select enmascarado por javascript pero resulta que no cambia el selected por default en el html
codigo Javascript
Código Javascript:
Ver original
var x, i, j, selElmnt, a, b, c; /*look for any elements with the class "custom-select":*/ x = document.getElementsByClassName("custom-select"); for (i = 0; i < x.length; i++) { selElmnt = x[i].getElementsByTagName("select")[0]; /*for each element, create a new DIV that will act as the selected item:*/ a = document.createElement("DIV"); a.setAttribute("class", "select-selected"); a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML; x[i].appendChild(a); /*for each element, create a new DIV that will contain the option list:*/ b = document.createElement("DIV"); b.setAttribute("class", "select-items select-hide"); for (j = 0; j < selElmnt.length; j++) { /*for each option in the original select element, create a new DIV that will act as an option item:*/ c = document.createElement("DIV"); c.innerHTML = selElmnt.options[j].innerHTML; c.addEventListener("click", function(e) { /*when an item is clicked, update the original select box, and the selected item:*/ var y, i, k, s, h; s = this.parentNode.parentNode.getElementsByTagName("select")[0]; h = this.parentNode.previousSibling; for (i = 0; i < s.length; i++) { if (s.options[i].innerHTML == this.innerHTML) { s.selectedIndex = i; h.innerHTML = this.innerHTML; y = this.parentNode.getElementsByClassName("same-as-selected"); for (k = 0; k < y.length; k++) { y[k].removeAttribute("class"); } this.setAttribute("class", "same-as-selected"); break; } } h.click(); }); b.appendChild(c); } x[i].appendChild(b); a.addEventListener("click", function(e) { /*when the select box is clicked, close any other select boxes, and open/close the current select box:*/ e.stopPropagation(); closeAllSelect(this); this.nextSibling.classList.toggle("select-hide"); this.classList.toggle("select-arrow-active"); }); } function closeAllSelect(elmnt) { /*a function that will close all select boxes in the document, except the current select box:*/ var x, y, i, arrNo = []; x = document.getElementsByClassName("select-items"); y = document.getElementsByClassName("select-selected"); for (i = 0; i < y.length; i++) { if (elmnt == y[i]) { arrNo.push(i) } else { y[i].classList.remove("select-arrow-active"); } } for (i = 0; i < x.length; i++) { if (arrNo.indexOf(i)) { x[i].classList.add("select-hide"); } } } /*if the user clicks anywhere outside the select box, then close all select boxes:*/ document.addEventListener("click", closeAllSelect);
el css
Código CSS:
claro que el formulario proviene de una class de php, por tanto me gustaria saber como puedo hacer que el valor seleccionado se modifique en la option del select.Ver original
/*the container must be positioned relative:*/ .custom-select { position: relative; font-family: Arial; } .custom-select select { // display: none; /*hide original SELECT element:*/ } .select-selected { background-color: DodgerBlue; } /*style the arrow inside the select element:*/ .select-selected:after { position: absolute; content: ""; top: 14px; right: 10px; width: 0; height: 0; border: 6px solid transparent; border-color: #fff transparent transparent transparent; } /*point the arrow upwards when the select box is open (active):*/ .select-selected.select-arrow-active:after { border-color: transparent transparent #fff transparent; top: 7px; } /*style the items (options), including the selected item:*/ .select-items div,.select-selected { color: #ffffff; padding: 8px 16px; border: 1px solid transparent; border-color: transparent transparent rgba(0, 0, 0, 0.1) transparent; cursor: pointer; user-select: none; } /*style items (options):*/ .select-items { position: absolute; background-color: DodgerBlue; top: 100%; left: 0; right: 0; z-index: 99; } /*hide the items when the select box is closed:*/ .select-hide { display: none; } .select-items div:hover, .same-as-selected { background-color: rgba(0, 0, 0, 0.1); }
agradezco su ayuda ya que e malgastado mas de una semana en este problema y me tiene desanimado.