darkfreaks Posted September 19, 2007 Share Posted September 19, 2007 how do i change it so when you select a category the sub category box below it is ungrey? <SCRIPT language=javascript> <!-- var blnIE; //IE? for table highlighting etc... var strEmptyString; var strCatSelectedString; var hexEnabled = "#ffffff"; var hexDisabled = "#dddddd"; var hexHighlightOn = "#FFB300"; var hexHighlightOff = "#ffffff"; //arrayLevel 0 for top level, 1 for next level down etc... function populate(arrayLevel) { //get the value of the selected index (click) strOptionValue = (docSelectorArray[arrayLevel].options[docSelectorArray[arrayLevel].selectedIndex].value); //if value is 0 then is a spacer option - move their choice to the bottom option if (strOptionValue == 0){ if (docSelectorArray[arrayLevel].selectedIndex != 0){ docSelectorArray[arrayLevel].selectedIndex = docSelectorArray[arrayLevel].selectedIndex - 1; strOptionValue = (docSelectorArray[arrayLevel].options[docSelectorArray[arrayLevel].selectedIndex].value); } //if they have clicked in an empty table then dont do anything else { return; } } //get the option text so we can see if we have a leaf or a branch (" >") strOptionText = (docSelectorArray[arrayLevel].options[docSelectorArray[arrayLevel].selectedIndex].text); //clear lower level select boxes------------------------------------------ //outerloop through select boxes, starting from the one below this clickf for (i = arrayLevel+1; i < intLevels; i++){ //inner loop through the number of items in select boxes for (j = docSelectorArray[i].length-2; j >= 0; j--){ docSelectorArray[i].options[j] = null; } //keep box a consistent width docSelectorArray[i].options[0] = new Option(strEmptyString, "0"); //disable and unhighlight if (blnIE){ docSelectorArray[i].style.background = hexDisabled; docTableArray[i].style.background = hexHighlightOff; } docSelectorArray[i].disabled = true; //docImageArray[i].src = docImageSrcOffArray[i]; } //need another branch (branch or top level)------------------------------- if ((strOptionText.indexOf(" >") != -1)){ //clear any value from the category box category.value = ""; //disable the next button submitButton.disabled = true; //get the next array and the number of options in it intNextArray = docSelectorArray[arrayLevel].options[docSelectorArray[arrayLevel].selectedIndex].value; //populate the next level if they didn't choose the "Select a Category" option if (intNextArray != 0){ //enable next arrayLevel docSelectorArray[arrayLevel+1].disabled = false; //IE only if (blnIE){ docSelectorArray[arrayLevel+1].style.background = hexEnabled; //color of next select box is now enabled docTableArray[arrayLevel].style.background = hexHighlightOff; //this table now unhighlighted docTableArray[arrayLevel+1].style.background = hexHighlightOn; //next table now highlighted docTableArray[intTableSubmit].style.background = hexHighlightOff; //Next button table unhighlighted } //get the number of options for the next level and populate the options intNumberOptions = c[intNextArray].length; //populate array with options for (i = 0; i < intNumberOptions; i++){ docSelectorArray[arrayLevel+1].options[i] = c[intNextArray][i]; } //put a new option at the end of the list so that we have a consistent size on the box docSelectorArray[arrayLevel+1].options[intNumberOptions] = new Option(strEmptyString, "0"); //unhighlight any previous selection if (docSelectorArray[arrayLevel+1].selectedIndex != -1) { docSelectorArray[arrayLevel+1].selectedIndex = -1; } } } //have reached a leaf, populate the others with end text------------------------------------------------- else { //get the option for this selection if (strOptionValue != 0) { category.value = strOptionValue; } //outerloop through select boxes, starting from the one below this click for (i = arrayLevel+1; i < intLevels; i++){ //populate with end text docSelectorArray[i].options[0] = new Option(strCatSelectedString, "0"); } //enable and hightlight submit button submitButton.disabled = false; //IE only if (blnIE){ docTableArray[arrayLevel].style.background = hexHighlightOff; docTableArray[intTableSubmit].style.background = hexHighlightOn; } } } //arrayLevel 0 for top level, 1 for next level down etc... function prePopulate(mCat) { //check mCat is sane if (mCat.length < 5) return; //must be at least 2 levels if (mCat.length % 5 != 0) return; //each mCat is 5 chars long if (mCat.charAt(mCat.length - 1) != '-') return;//last char of last mCat is '-' var mCatArray = mCat.split('-'); //this is now an array of strings, mCatArray[0] = '0011' etc... var intMcat //integer from string mcat '0011' -> 11 etc... var strOptionText //text of option selected to see if we are a leaf or not var intNextArray //next array down from the one we are currently working on var intNumberOptions //number of options for the next level //outer loop down through the levels for (intArrayLevel = 0; intArrayLevel < (mCatArray.length - 1); intArrayLevel++){ //set integer version of mCat intMcat = parseInt(mCatArray[intArrayLevel],10); //inner loop - find the matching mCat and set it for (intArrayOption = 0; intArrayOption < docSelectorArray[intArrayLevel].length; intArrayOption++){ //found a match if (docSelectorArray[intArrayLevel].options[intArrayOption].value == intMcat){ //so select the index and get the text docSelectorArray[intArrayLevel].selectedIndex = intArrayOption; strOptionText = (docSelectorArray[intArrayLevel].options[intArrayOption].text); //unset the selected image and table highlight for the current level //docImageArray[intArrayLevel].src = docImageSrcOffArray[intArrayLevel]; if (blnIE){ docTableArray[intArrayLevel].style.background = hexHighlightOff; } //do we need another branch or have we reached the leaf? //need another branch (branch or top level)------------------------------- if (strOptionText.indexOf(" >") != -1){ //set the selected image and table highlight for this next level //docImageArray[intArrayLevel+1].src = docImageSrcOnArray[intArrayLevel+1]; if (blnIE){ docTableArray[intArrayLevel+1].style.background = hexHighlightOn; docSelectorArray[intArrayLevel+1].style.background = hexEnabled; } //enable this next level docSelectorArray[intArrayLevel+1].disabled = false; //get the next array intNextArray = docSelectorArray[intArrayLevel].options[docSelectorArray[intArrayLevel].selectedIndex].value; //get the number of options for the next level and populate the options intNumberOptions = c[intNextArray].length; for (i = 0; i < intNumberOptions; i++){ docSelectorArray[intArrayLevel+1].options[i] = c[intNextArray][i]; } //put a new option at the end of the list so that we have a consistent size on the box docSelectorArray[intArrayLevel+1].options[intNumberOptions] = new Option(strEmptyString, "0"); //if we are 1 level from the end then check and select the next option if appropriate if (intArrayLevel == 2){ //get last mCat intMcat = parseInt(mCatArray[intArrayLevel+1],10); //loop through the last category and find the appropriate category for (i = 0; i < intNumberOptions; i++){ if (docSelectorArray[intArrayLevel+1].options[i].value == intMcat){ //set the selected index and populate the category box docSelectorArray[intArrayLevel+1].selectedIndex = i; category.value = intMcat; //unset the selected image and table highlight for the current level //docImageArray[intArrayLevel+1].src = docImageSrcOffArray[intArrayLevel]; //enable and highlight submit button submitButton.disabled = false; if (blnIE){ docTableArray[intArrayLevel+1].style.background = hexHighlightOff; docTableArray[intTableSubmit].style.background = hexHighlightOn; } //break now to stop looping through the final box break; } } //found the final cat so stop here return; } } //have reached a leaf, populate the others with end text------------------ else { //populate the category box category.value = docSelectorArray[intArrayLevel].options[intArrayOption].value; //outerloop through select boxes, starting from the one above this click for (i = intArrayLevel+1; i < intLevels; i++){ //populate with end text docSelectorArray[i].options[0] = new Option(strCatSelectedString, "0"); docSelectorArray[i].disabled = true; } //enable and highlight submit button submitButton.disabled = false; if (blnIE){ docTableArray[intTableSubmit].style.background = hexHighlightOn; } } //break out of this loop, as we have found a match and do not need to continue checking break; } } } } // --> </SCRIPT> Link to comment https://forums.phpfreaks.com/topic/69852-solved-subcat-box-remains-gray/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.