26.11.2011 I have updated the script to v2.4 to attempt to fix some problems withe overlapping tabs in IE7. I have moved the files to another server. Follow the link under the “How to use this solution” section below. I have added one new “attibute” under the settings section in the CEWP code: “baseTabColor”. See below for details.
24.03.2011 Updated the script to fix an issue with the attachments. They now appear at the bottom of every tab – like in a unmodified form. If there are no attachments, the field is hidden.
In the CEWP-code the example-tab containing the attachments has been removed.
19.03.2011 v2.1 adds the ability to call a function after the tab has expanded. You can specify a shared function that will be called on every tab, and/or a function that is called on one specific tab.
This solution has previously been published over at NothingButSharePoint
This solution is used to “tab” SharePoint forms. If you have a long form, you can group fields together and present them in tabs for a better overview.
Features
- Full SP2007 and SP2010 support for both lists and document libraries
- Works for all standard field types (Custom field types are not guaranteed to work)
- A field can be used in multiple tabs
- You can have a tab displaying all fields
- You can have a tab catching all orphans (fields that are not displayed in any other tab). Useful if one adds columns to a list without updating the script call.
- Highlights tab if a field fails validation upon save
- Use a URL query string parameter to expand a specific tab
Browser compatibility tested in:
- IE6 (Works in SP2007 only due to SP2010 incompatibility with IE6)
- IE7
- IE8
- Firefox 3.6.13
- Google Chrome 8.0.552.237
- Safari 5.0.2
How to use this solution
Download the code for the file “TabsForSharePointForms.js” from this location
Upload the file to your script repository. This can be a shared document library in the site where you will be using the solution (ensure ALL users have read access).
For each of the forms (NewForm.aspx, DispForm.aspx and EditForm.aspx) add a Content Editor Web Part (CEWP) below the form.
For SharePoint 2007
To put the page in edit mode, modify the URL like this:
/Lists/Tabs/NewForm.aspx?toolpaneview=2
/Lists/Tabs/DispForm.aspx?ID=1&toolpaneview=2
/Lists/Tabs/EditForm.aspx?ID=1&toolpaneview=2
For SharePoint 2010
Add this code block to the CEWP:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="/test/English/Javascript/Tabs/TabsForSharePointForms.js"></script>
<script type="text/javascript">
var tabConstructor = {tabs:[{name:'First Tab',fields:['InMultipleTabs','Column1','Column2'],mouseOver:'This is the first tab',tabStyle:'',clickFunction:''},
{name:'Second Tab',fields:['InMultipleTabs','Column3','Column4','Lookup1','MyMultiLookup'],mouseOver:'This is the second tab',tabStyle:'',clickFunction:'secondTabClick(this)'},
{name:'Third Tab',fields:['InMultipleTabs','Title'],mouseOver:'This is the third tab',tabStyle:'',clickFunction:''},
{name:'Forth Tab',fields:['Column5','Column6','MyPeoplePicker'],mouseOver:'This is the forth tab',tabStyle:'',clickFunction:''}],
settings:{viewAllFields:{show:true,name:'All fields',mouseOver:'This tab shows all fields',tabStyle:'',clickFunction:''},
orphanFields:{show:true,name:'...',mouseOver:'All orphan fields',tabStyle:'',clickFunction:''},
breakTabRowAt:null,
baseTabColor:'#F5F5F5',
hoverTabColor:'#FFF68F',
selectedTabColor:'#B9D3EE',
formBgColor:'#C6E2FF'},
clickFunctionShared:'clickFunctionShared(this)'};
function clickFunctionShared(elm){
var tab = $(elm);
// This code is run on click on any tab
}
function secondTabClick(elm){
var tab = $(elm);
var arrOfFields = tab.attr('fields').split(',');
alert("The fields included in the second tab is these:\n"+arrOfFields);
}
init_buildTabbedForm(tabConstructor);
</script>
This is explained in detail below.
You must change the “src” to “TabsForSharePointForms.js” to match your local file. If you like to use a local instance of jQuery, change that as well.
You must also change this example to match your columns FieldInternalName.
The call to the function “init_buildTabbedForm” takes two parameters:
tabConstructor: The object constructed in “var tabConstructor”.
selectedTab: Integer that specifies which tab to preselect.
Variable “tabConstructor” explained:
New in v2.4:
baseTabColor: Set the default background color for the tabs. See CEWP code for example.
Attachments
I have changed the attachment handling in v2.2. Now attachments are left untouched and they will display at the bottom of all tabs. If there are no attachments, the field is hidden.
How to find the FieldInternalName
Go to your list. Open one existing list element in DispForm.aspx. Right click and select “View source”. Search for “FieldInternalName”. All fields should be found in this format:

Link directly to a tab:
Specify the tab to preselect in the URL like this:
http://*************/Lists/Tabs/NewForm.aspx?sTab=3
Note:
This is true only for unmodified forms. If you have modified the form in SharePoint designer, you will have to look at the function “init_fields_v2()” in the code to adapt it to your custom form. You will find a bit more information here.
Overriding native SharePoint functions
To overcome some issues with rich text fields I had to override one function: RTE_OnFocus.
I have added one line to the bottom of the function:
g_elemRTELastTextAreaConverted=document.getElementById(strBaseElementID);
To catch “empty field validation” on date and time columns “pre save”, I had to override the function “PreSaveItem”. I have added one line to the top of the function:
preSaveHighlightTabOnValidation();
This will not interfere with the use of the function “PreSaveAction” often used to “do stuff” before save.
Finale notes
The solution is licensed under the MIT X11 license. You find the license agreement by clicking the little (c) to the right of the tabs.
I have set the initial release to v2.0 as I have previously posted a similar solution.
Ask if anything is unclear
Alexander


March 17, 2012 at 7:03 pm |
Never mind it works if I put it after the init_buildTabbedForm(tabConstructor); — of course it has to be after in order for fields to be available
March 17, 2012 at 11:00 pm |
Well it did work but now its the same only hides when go away from first tab and then back
March 17, 2012 at 11:41 pm |
Solved if a popup dialog it must be within $(document).ready(function()
March 28, 2012 at 5:31 pm |
Alexander,
Thank you so much! Though I have known about Tabs for SharePoint Forms for quite a while, my first opportunity came just recently, and now I am on my second application.
Question: I spent a little time modifying the colors of the tabs to match our (current) 2007 environment and tweeking the fonts, etc., however could not make a perfect match to my site style… I have in the past used Christophe’s (Path to SharePoint) Easy-Tabs, and admired his use SharePoint’s default CSS to make Easy-Tabs abide by the template of the site, etc.
Do you think that using SharePoint’s CSS could be a future feature for Tabs for SharePoint Forms?
Again, many thanks!
April 30, 2012 at 3:56 pm |
Hi Alexander,
Have used your code in a number of solutions since coming across it about a year ago and find it very useful for large custom lists.
However I’ve had a bit of an odd output in my latest use, Version 2.4, where two of the ‘fields’ on my fourth tab (and an all fields tab) are showing the column ‘Description’ in the input field area rather that directly below. This can be overtyped when completing the form but looks odd. All the other field in all the other tabs – there are a total of 6 tabs each with around 10 fields – display the fields and descriptions properly.
April 30, 2012 at 9:23 pm
Hi, Could you provide a few screenshots and information about which browser you are using? – if you could test it in another browser to see if the problem persists it would be very helpful.
Alexander
May 1, 2012 at 10:15 am
Hi Alexander,
I can send you some screen shots if you can email me your email address to attach them too.
I’m using IE8 into MOSS2007 and will see what result I get with FireFox and send you screen shots from both.
Regards,
David
May 1, 2012 at 10:36 am
Alexander,
Please ignore my supposed problem, it was down to me. Seems I’d managed to paste the description for the two fields in question into the ‘Default Value’ not the ‘Description’ field when creating the columns!! I need to take more care.
Thanks for following up. Regards, David
May 1, 2012 at 2:55 am |
When testing with Safari 5.0 the dropdowns render horizontally and not vertically. And only 4 or so will render horizontally. Is this a known problem or is there some configuration setting I am missing. Works fine in IE.
May 1, 2012 at 8:36 am
Disregard — posted in the wrong place by mistake
May 7, 2012 at 5:56 pm |
Rendering with Safari on IPAD fails with Display form but not with edit or new form. The display form renders with copyright (2.4) at the top of the dialog form and then all white space below and no way to scroll up to see the real form. Works fine with Safari on non-IPAD devices (could be same issue on Iphone did not test that).