HI,
This is my first time posting.
I have a php function with opgroup and option (category and subcategory)
function genereazahtmlforselect($rows, $valsubcategory = '', $valcategorie = '')
{
$html = '<select name="subcategori" id="categorii" class="cascading" title="Categorie "> ';
$html .= '<optgroup label="Selecteaza">';
$html .= '<option value="">Alege o Categorie</option></optgroup>';
foreach ($rows as $category) {
if($category['parinte'] == '0'){
$html .= '<optgroup id="' . $category['id'] . '" title=" Subcategorie " label="' . $category['name'] . '"> ';
foreach ($rows as $subcategory) {
if ($subcategory['parinte'] == $category['id']){
$html .= '<option value="'.$subcategory['id'].'"';
if ($subcategory['id'] === $valsubcategory) {
$html .= 'selected = "selected"';
}
$html .= '>'.$subcategory['name'].'</option>';
}
}
$html .= '</optgroup>';
}
}
$html .= '</select>';
return $html;
}
After that I use the javascript function splits into two select…
extractMasterMenu: function(menu)
{
var masterMenu = document.createElement("select");
masterMenu.id = menu.id + "master";
masterMenu.setAttribute("name", masterMenu.id);
masterMenu.setAttribute("title", menu.getAttribute("title"));
masterMenu._slave = menu;
while (menu.hasChildNodes())
{
var optgroup = menu.firstChild;
if (optgroup.nodeType == 1)
{
var masterOption = document.createElement("option");
masterOption.setAttribute("id", optgroup.getAttribute("id"));
masterOption.setAttribute("value", optgroup.getAttribute("id"));
masterOption.appendChild(document.createTextNode(optgroup.getAttribute("label")));
masterMenu.appendChild(masterOption);
var slaveOptions = [];
while (optgroup.hasChildNodes())
{
var option = optgroup.firstChild;
slaveOptions[slaveOptions.length] = option;
optgroup.removeChild(option);
}
masterOption._slaveOptions = slaveOptions;
menu.setAttribute("title", optgroup.getAttribute("title"));
}
menu.removeChild(optgroup);
}
menu.parentNode.insertBefore(masterMenu, menu);
return masterMenu;
}
So I tried to bring selected = selected for this javascript code generated by optgroup.
if (isset( $categori )) {
?>
<script type="text/javascript">
(function () {
var categorieSelectata = <?php echo "'$categori'"; ?>;
var categorii = document.getElementById("categoriimaster");
alert(categorii);
for ( var i = 1; i < categorii.length; i++ ) {
if ( categorii.options[i].value === categorieSelectata ) {
categorii.selectedIndex = i;
break;
}
}
})();
</script>
<?php
}
categorieselectata return a number and its ok
Alert return me null…If someone can help me to keep the name selected after submit…
Thanks for reading!