Tabbed Search v2 (JavaScript)
An alternative javascript file for Tabbed Search. Instead of changing the form action when clicking a table, it changes the action when clicking the submit button, so it does not impact on other possible submit buttons in the form. HTML and CSS pages remain the same.
The script: tabbedsearch.js
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } } // this sets up the forms for search // tested and works in IE 5+, Firefox 1.0+ function setupForms(method) { // get all forms and loop through them var forms = document.getElementsByTagName("form"); for(i=0; i<forms.length;i++) { if(forms[i].id == "") { forms[i].id = "form" + i; } var formid = forms[i].id; // get list var list = forms[i].getElementsByTagName("ul"); // loop through items in list for(j=0; j<list.length;j++) { //alert(list[j].className); if(list[j].className == "formpages") { var items = list[j].getElementsByTagName("li"); for(k=0; k<items.length;k++) { var link = items[k].getElementsByTagName("a")[0]; if (link) { if(link.id == "") { link.id = formid + "Link" + k; } // this stores the links to the search if(forms[i].searchlinkids) { forms[i].searchlinkids = forms[i].searchlinkids + "," + link.id; } else { forms[i].searchlinkids = link.id; } link.onclick = function() { removeLinkClassNames(formid); this.className = "active"; return false; }; } } } } // find submit button var divs = forms[i].getElementsByTagName("div"); for(j=0; j<divs.length;j++) { if (divs[j].className == "searchbox") { var inputs = divs[j].getElementsByTagName("input"); for(k=0; k<inputs.length;k++) { if(inputs[k].type == "submit") { inputs[k].onclick = function() { changeFormAction(formid, method); } } } break; } } } } function removeLinkClassNames(form) { if(typeof(form) == 'string') { form = document.getElementById(form); } var f = form.searchlinkids.split(","); for (i=0; i<f.length; i++) { document.getElementById(f[i]).className = ""; } } function changeFormAction(form,method) { if(typeof(form) == 'string') { form = document.getElementById(form); } var action = form.action; form.oldaction = action; // get list var list = form.getElementsByTagName("ul"); // loop through items in list for(i=0; i<list.length;i++) { //alert(list[i].className); if(list[i].className == "formpages") { var items = list[i].getElementsByTagName("li"); for(j=0; j<items.length;j++) { var link = items[j].getElementsByTagName("a")[0]; if (link) { if(link.className == "active") { action = link.href; break; } } } } } // change action and method if(action) { form.action = action; } if(method) { form.method = method; } } //addLoadEvent(setupForms); //addLoadEvent(function(){setupForms("post")}); addLoadEvent(function(){setupForms("get")});
Comments