SlideShare a Scribd company logo
Transform SharePoint List Forms
with HTML, CSS and JavaScript
Turn the out-of-the-box SharePoint list forms
into custom styled forms
• Intro
• Custom “Form” Approach
• Next Steps
• Resources
Agenda
Transform SharePoint Forms
• CloudShare – Environments Made Easy
• http://www.cloudshare.com/
Thank you to my sponsor
Transform SharePoint Forms
• .NET / SharePoint solution and technical architect
• Over 18 years experience developing business
solutions for private industry & government
• Recent clients include HoC, Justice Canada, NRC,
NSERC, DFAIT, CFPSA, MCC, OSFI
• Specialize in Microsoft technologies
• Speaker at user groups and conferences
About Me
Transform SharePoint Forms
Default List Forms
• Plain & simple
• Single long column
• Titles have no
emphasis
• Very limited field
validation
• No field correlation
• In short, it’s UGLY!
Transform SharePoint Forms
• Style the default New, Display and Edit list forms
• Use a light touch, minimalist approach
• In web design tool of choice, eg Dreamweaver
• Implement using pure HTML, CSS, and JavaScript
Desired Situation
Transform SharePoint Forms
• Custom master page
• SharePoint markup (CAML)
• Delegate controls and custom actions
• Farm / sandbox solutions
• SharePoint Designer
• InfoPath forms
• Visual Studio
Avoid Heavy-Weight Solution
Transform SharePoint Forms
Based on Mark Rackley’s original approach, Easy
Custom Layouts for Default SharePoint Forms
• Modify Default List Form Web Parts
• Use Content Editor webparts to inject HTML and
JavaScript
• Inject alternate HTML “form” to define new layout
• Inject JavaScript to move SP fields to new layout
Acknowledgements
Transform SharePoint Forms
• Add CSS to Default New, Display and Edit forms
• Inject text and HTML using JavaScript
• Use any supported HTML, CSS, and JavaScript
• Use any JavaScript framework
• Eg, jQuery, jQuery UI and plugins
Style Existing “Forms”
Transform SharePoint Forms
• Create a styles markup page in Site Assets library:
<script src="//code.jquery.com/jquery-1.10.1.min.js"></script>
<style type="text/css">
.ms-formlabel h3.ms-standardheader {font-weight:bold; text-align:
right; padding-right: 10px;}
</style>
<script>
$(document).ready(function() {
$(".ms-formlabel h3.ms-standardheader").each(function(){
$(this).append(“ :");
});
});
</script>
Style Existing “Forms”
Transform SharePoint Forms
• Load jQuery:
<script src="//code.jquery.com/jquery-1.10.1.min.js"></script>
<style type="text/css">
.ms-formlabel h3.ms-standardheader {font-weight:bold; text-align:
right; padding-right: 10px;}
</style>
<script>
$(document).ready(function() {
$(".ms-formlabel h3.ms-standardheader").each(function(){
$(this).append(“ :");
});
});
</script>
Style Existing “Forms”
Transform SharePoint Forms
• Apply font / align / pad style to field header:
<script src="//code.jquery.com/jquery-1.10.1.min.js"></script>
<style type="text/css">
.ms-formlabel h3.ms-standardheader {font-weight:bold; text-align:
right; padding-right: 10px;}
</style>
<script>
$(document).ready(function() {
$(".ms-formlabel h3.ms-standardheader").each(function(){
$(this).append(“ :");
});
});
</script>
Style Existing “Forms”
Transform SharePoint Forms
• Inject text into DOM:
<script src="//code.jquery.com/jquery-1.10.1.min.js"></script>
<style type="text/css">
.ms-formlabel h3.ms-standardheader {font-weight:bold; text-align:
right; padding-right: 10px;}
</style>
<script>
$(document).ready(function() {
$(".ms-formlabel h3.ms-standardheader").each(function(){
$(this).append(“ :");
});
});
</script>
Style Existing “Forms”
Transform SharePoint Forms
• Edit each of the New, Display and Edit forms
Style Existing “Forms”
Transform SharePoint Forms
• Add a Content Editor
web part
Style Existing “Form”
Transform SharePoint Forms
• Link to styles markup
page
Style Existing “Form”
Transform SharePoint Forms
• Note style changes
Style Existing “Form”
Transform SharePoint Forms
• Final result
Style Existing “Form”
Transform SharePoint Forms
• Style existing form
Demo #1
Transform SharePoint Forms
• Add Custom HTML “form” table to Default New,
Display and Edit forms
• Move Edit Controls into a Custom HTML “form”
table
• Hide OOTB HTML “form” table
• Use any supported HTML, CSS, and JavaScript
• Use any JavaScript framework
• Eg, jQuery, jQuery UI and plugins
Design Custom HTML “Form”
Transform SharePoint Forms
• Create a form layout page in Site Assets library:
<table cellpadding="5" cellspacing="5" bgcolor="#CCCCCC" >
<tr>
<td>
<b>Title:</b><br>
<span class="customForm" data-internalName="Title"></span>
</td>
<td>
<b>Issue Status:</b><br>
<span class="customForm" data-internalName="Status"></span>
</td>
</tr>
...
</table>
Design Custom HTML “Form”
Transform SharePoint Forms
• Apply styling
<table cellpadding="5" cellspacing="5" bgcolor="#CCCCCC" >
<tr >
<td>
<b>Title:</b><br>
<span class="customForm" data-internalName="Title"></span>
</td>
<td>
<b>Issue Status:</b><br>
<span class="customForm" data-internalName="Status"></span>
</td>
</tr>
...
</table>
Design Custom HTML “Form”
Transform SharePoint Forms
• Use placeholder for moved fields
<table cellpadding="5" cellspacing="5" bgcolor="#CCCCCC" >
<tr >
<td>
<b>Title:</b><br>
<span class="customForm" data-internalName="Title"></span>
</td>
<td>
<b>Issue Status:</b><br>
<span class="customForm" data-internalName="Status"></span>
</td>
</tr>
...
</table>
Design Custom HTML “Form”
Transform SharePoint Forms
• Create a move fields script in Site Assets library:
<!– include jQuery -->
<script>
$(document).ready(function() {
$("span.customForm").each(function() {
internalName = $(this).attr("data-internalName");
elem = $(this);
$("table.ms-formtable td").each(function(){
if (this.innerHTML.indexOf(
'FieldInternalName="'+internalName+'"') != -1){
$(this).contents().appendTo(elem);
}
});
});
});
</script>
Design Custom HTML “Form”
Transform SharePoint Forms
• Traverse placeholders in custom form
<!– include jQuery -->
<script>
$(document).ready(function() {
$("span.customForm").each(function() {
internalName = $(this).attr("data-internalName");
elem = $(this);
$("table.ms-formtable td").each(function(){
if (this.innerHTML.indexOf(
'FieldInternalName="'+internalName+'"') != -1){
$(this).contents().appendTo(elem);
}
});
});
});
</script>
Design Custom HTML “Form”
Transform SharePoint Forms
• Find corresponding fields in OOTB form
<!– include jQuery -->
<script>
$(document).ready(function() {
$("span.customForm").each(function() {
internalName = $(this).attr("data-internalName");
elem = $(this);
$("table.ms-formtable td").each(function(){
if (this.innerHTML.indexOf(
'FieldInternalName="'+internalName+'"') != -1){
$(this).contents().appendTo(elem);
}
});
});
});
</script>
Design Custom HTML “Form”
Transform SharePoint Forms
• Move fields from OOTB form to custom form
<!– include jQuery -->
<script>
$(document).ready(function() {
$("span.customForm").each(function() {
internalName = $(this).attr("data-internalName");
elem = $(this);
$("table.ms-formtable td").each(function(){
if (this.innerHTML.indexOf(
'FieldInternalName="'+internalName+'"') != -1){
$(this).contents().appendTo(elem);
}
});
});
});
</script>
Design Custom HTML “Form”
Transform SharePoint Forms
• Add two Content
Editor web parts
Custom HTML “Form”
Transform SharePoint Forms
• Link first to custom
HTML “form” layout
page
Custom HTML “Form”
Transform SharePoint Forms
• Link second to move
fields script
Custom HTML “Form”
Transform SharePoint Forms
• Note layout changes
Custom HTML “Form”
Transform SharePoint Forms
• Final result
Custom HTML “Form”
Transform SharePoint Forms
• Simple TABLE-based layout
Demo #2
Transform SharePoint Forms
• Add Custom Tab “form”
• Move Edit Controls into Custom Tab “form”
• Hide OOTB HTML “form” table
• Use any supported HTML, CSS, and JavaScript
• Use any JavaScript framework
• Eg, jQuery, jQuery UI and plugins
Design Custom Tab “Form”
Transform SharePoint Forms
• Create a form layout page in Site Assets library:
<div id="tabs">
<ul>
<li><a href="#tabs-1">General</a></li>
<li><a href="#tabs-2">Description</a></li>
<li><a href="#tabs-3">Related</a></li>
</ul>
<div id="tabs-1">
<div class="table">
<div class="row">
<b>Title:</b><br>
<span class="customForm" data-internalName="Title"></span>
</div><br/>
<div class="row">
<b>Issue Status:</b><br>
<span class="customForm" data-internalName="Status"></span>
</div><br/>
...
</div>
Design Custom Tab “Form”
Transform SharePoint Forms
• Define tabs:
<div id="tabs">
<ul>
<li><a href="#tabs-1">General</a></li>
<li><a href="#tabs-2">Description</a></li>
<li><a href="#tabs-3">Related</a></li>
</ul>
<div id="tabs-1">
<div class="table">
<div class="row">
<b>Title:</b><br>
<span class="customForm" data-internalName="Title"></span>
</div><br/>
<div class="row">
<b>Issue Status:</b><br>
<span class="customForm" data-internalName="Status"></span>
</div><br/>
...
</div>
Design Custom Tab “Form”
Transform SharePoint Forms
• Use placeholders for moved fields:
<div id="tabs">
<ul>
<li><a href="#tabs-1">General</a></li>
<li><a href="#tabs-2">Description</a></li>
<li><a href="#tabs-3">Related</a></li>
</ul>
<div id="tabs-1">
<div class="table">
<div class="row">
<b>Title:</b><br>
<span class="customForm" data-internalName="Title"></span>
</div><br/>
<div class="row">
<b>Issue Status:</b><br>
<span class="customForm" data-internalName="Status"></span>
</div><br/>
...
</div>
Design Custom Tab “Form”
Transform SharePoint Forms
• Enable jQuery UI tabs in move fields script:
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<script>
$(function() {
var css = "//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-
ui.css";
document.createStyleSheet(css);
$( "#tabs" ).tabs();
});
</script>
Design Custom Tab “Form”
Transform SharePoint Forms
• Inject stylesheet reference for tab styling:
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<script>
$(function() {
var css = "//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-
ui.css";
document.createStyleSheet(css);
$( "#tabs" ).tabs();
});
</script>
Design Custom Tab “Form”
Transform SharePoint Forms
• Activate jQueryUI tabs:
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
<script>
$(function() {
var css = "//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-
ui.css";
document.createStyleSheet(css);
$( "#tabs" ).tabs();
});
</script>
Design Custom Tab “Form”
Transform SharePoint Forms
• Add two Content
Editor web parts
Custom Tab “Form”
Transform SharePoint Forms
• Link first to custom
tab “form” layout
page
Custom Tab “Form”
Transform SharePoint Forms
• Link second to
enhanced move
fields script
Custom Tab “Form”
Transform SharePoint Forms
• Note layout changes
Custom Tab “Form”
Transform SharePoint Forms
• Final result
Custom Tab “Form”
Transform SharePoint Forms
• DIV-based layout with tabs
Demo #3
Transform SharePoint Forms
• Pure web-based solution (HTML, CSS, JavaScript)
• Does not require SharePoint Designer or InfoPath
• Requires only limited permissions
• Manage Lists for initial config of web parts on
default forms
• Edit document to revise HTML or Tab “form” layout
Pros of Custom “Form”
Transform SharePoint Forms
• Field list on “form” is hard coded not dynamic
• List column management not tied to “form” design
• Field titles are initially hard coded (eg unilingual),
but additional line of JavaScript will move them as
well
Cons of Custom “Form”
Transform SharePoint Forms
• Learn JavaScript
• Learn SharePoint’s flavour of JavaScript, its
objects, helper functions, and APIs
• Customize a SharePoint View / Edit form with an
embedded HTML form
• Customize a SharePoint field on a View / Edit form
with a field display template
• Never again leave an ugly OOTB SharePoint form
as is!
Next Steps
Transform SharePoint Forms
• Mark Rackley – Easy Custom Layouts for Default
SharePoint Forms (blog)
• Martin Hatch – JSLink and Display Templates
(blog)
• Todd Bleeker – Custom Forms and Conditional
Formatting in SharePoint 2013 (conference)
• Sly Gryphon – Ways to load jQuery in SharePoint
(2010/2013)
Resources
Transform SharePoint Forms
• John Calvert, Chief Architect
• Software Craft, Inc.
• john at softwarecraft dot ca
• softwarecraft dot ca
• at softwarecraft99
Contact Me
Transform SharePoint Forms

More Related Content

PPTX
Transform SharePoint List Forms with HTML and CSS
PPT
Introduction to html5
PPTX
SharePoint 2013 Client-Side Rendering (CSR) & JSLink Templates
PDF
World of CSS Grid
PDF
Data Source API in Spark
PPTX
HTML5 & CSS3
PDF
Introduction to CSS Grid Layout
PDF
Laravel presentation
Transform SharePoint List Forms with HTML and CSS
Introduction to html5
SharePoint 2013 Client-Side Rendering (CSR) & JSLink Templates
World of CSS Grid
Data Source API in Spark
HTML5 & CSS3
Introduction to CSS Grid Layout
Laravel presentation

What's hot (20)

PDF
File system is full - what do i do
DOCX
Oracle A.I.M. Methodology Documentation
PDF
CSS Best practice
PPTX
Kafka connect 101
PDF
From HDFS to S3: Migrate Pinterest Apache Spark Clusters
PDF
Beyond SQL: Speeding up Spark with DataFrames
PDF
Le Wagon - UI and Design Crash Course
PDF
CSS media types
PPTX
Data Streaming with Apache Kafka & MongoDB
PPTX
Css pseudo-classes
PDF
Introduction to Spark Streaming
PPTX
Processing Large Data with Apache Spark -- HasGeek
PDF
CSS framework By Palash
PPTX
Apache Phoenix and Apache HBase: An Enterprise Grade Data Warehouse
PPTX
SASS - CSS with Superpower
PPTX
Laravel ppt
PDF
CSS Boc model
PPTX
LLAP: long-lived execution in Hive
PDF
CSS Day: CSS Grid Layout
PDF
Bucketing 2.0: Improve Spark SQL Performance by Removing Shuffle
File system is full - what do i do
Oracle A.I.M. Methodology Documentation
CSS Best practice
Kafka connect 101
From HDFS to S3: Migrate Pinterest Apache Spark Clusters
Beyond SQL: Speeding up Spark with DataFrames
Le Wagon - UI and Design Crash Course
CSS media types
Data Streaming with Apache Kafka & MongoDB
Css pseudo-classes
Introduction to Spark Streaming
Processing Large Data with Apache Spark -- HasGeek
CSS framework By Palash
Apache Phoenix and Apache HBase: An Enterprise Grade Data Warehouse
SASS - CSS with Superpower
Laravel ppt
CSS Boc model
LLAP: long-lived execution in Hive
CSS Day: CSS Grid Layout
Bucketing 2.0: Improve Spark SQL Performance by Removing Shuffle
Ad

More from John Calvert (14)

PPTX
Azure IaaS-PaaS Migrations - Lessons Learned
PPTX
Lessons learned from migrating a legacy web app to azure
PPTX
What's New and What's Out for SharePoint Server 2019 On-Premises
PPTX
SharePoint 2016 Platform Adoption Lessons Learned and Advanced Troubleshooting
PPTX
SharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
PPTX
SharePoint On-Premises Nirvana
PPTX
SharePoint 2016 - What’s New and What Matters
PPTX
SharePoint 2013 APIs
PPTX
Migrating to SharePoint 2013 - Business and Technical Perspective
PPTX
How to be Social with My Sites in SharePoint 2013
PPTX
IIBA OO - Is a business analyst required for SharePoint projects?
PPTX
SharePoint for the .NET Developer
PPTX
Cloud Based Dev/Test Environments for .NET and SharePoint Using CloudShare
PPTX
Cloud-Based Dev/Test Environments for SharePoint using CloudShare
Azure IaaS-PaaS Migrations - Lessons Learned
Lessons learned from migrating a legacy web app to azure
What's New and What's Out for SharePoint Server 2019 On-Premises
SharePoint 2016 Platform Adoption Lessons Learned and Advanced Troubleshooting
SharePoint 2016 Adoption - Lessons Learned and Advanced Troubleshooting
SharePoint On-Premises Nirvana
SharePoint 2016 - What’s New and What Matters
SharePoint 2013 APIs
Migrating to SharePoint 2013 - Business and Technical Perspective
How to be Social with My Sites in SharePoint 2013
IIBA OO - Is a business analyst required for SharePoint projects?
SharePoint for the .NET Developer
Cloud Based Dev/Test Environments for .NET and SharePoint Using CloudShare
Cloud-Based Dev/Test Environments for SharePoint using CloudShare
Ad

Recently uploaded (20)

PPTX
Materi_Pemrograman_Komputer-Looping.pptx
PDF
Comprehensive Salesforce Implementation Services.pdf
PDF
Jenkins: An open-source automation server powering CI/CD Automation
PDF
Exploring AI Agents in Process Industries
PDF
QAware_Mario-Leander_Reimer_Architecting and Building a K8s-based AI Platform...
PPTX
Materi-Enum-and-Record-Data-Type (1).pptx
PPTX
Save Business Costs with CRM Software for Insurance Agents
PPTX
CRUISE TICKETING SYSTEM | CRUISE RESERVATION SOFTWARE
PDF
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
PDF
How to Choose the Most Effective Social Media Agency in Bangalore.pdf
PDF
AI in Product Development-omnex systems
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
What to Capture When It Breaks: 16 Artifacts That Reveal Root Causes
PDF
Build Multi-agent using Agent Development Kit
DOCX
The Future of Smart Factories Why Embedded Analytics Leads the Way
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Odoo Consulting Services by CandidRoot Solutions
DOCX
The Five Best AI Cover Tools in 2025.docx
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
Lecture #1.ppt.pptx, Visuals Programming
Materi_Pemrograman_Komputer-Looping.pptx
Comprehensive Salesforce Implementation Services.pdf
Jenkins: An open-source automation server powering CI/CD Automation
Exploring AI Agents in Process Industries
QAware_Mario-Leander_Reimer_Architecting and Building a K8s-based AI Platform...
Materi-Enum-and-Record-Data-Type (1).pptx
Save Business Costs with CRM Software for Insurance Agents
CRUISE TICKETING SYSTEM | CRUISE RESERVATION SOFTWARE
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
How to Choose the Most Effective Social Media Agency in Bangalore.pdf
AI in Product Development-omnex systems
How Creative Agencies Leverage Project Management Software.pdf
What to Capture When It Breaks: 16 Artifacts That Reveal Root Causes
Build Multi-agent using Agent Development Kit
The Future of Smart Factories Why Embedded Analytics Leads the Way
2025 Textile ERP Trends: SAP, Odoo & Oracle
Odoo Consulting Services by CandidRoot Solutions
The Five Best AI Cover Tools in 2025.docx
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Lecture #1.ppt.pptx, Visuals Programming

Transform SharePoint default list forms with HTML, CSS and JavaScript

  • 1. Transform SharePoint List Forms with HTML, CSS and JavaScript Turn the out-of-the-box SharePoint list forms into custom styled forms
  • 2. • Intro • Custom “Form” Approach • Next Steps • Resources Agenda Transform SharePoint Forms
  • 3. • CloudShare – Environments Made Easy • http://www.cloudshare.com/ Thank you to my sponsor Transform SharePoint Forms
  • 4. • .NET / SharePoint solution and technical architect • Over 18 years experience developing business solutions for private industry & government • Recent clients include HoC, Justice Canada, NRC, NSERC, DFAIT, CFPSA, MCC, OSFI • Specialize in Microsoft technologies • Speaker at user groups and conferences About Me Transform SharePoint Forms
  • 5. Default List Forms • Plain & simple • Single long column • Titles have no emphasis • Very limited field validation • No field correlation • In short, it’s UGLY! Transform SharePoint Forms
  • 6. • Style the default New, Display and Edit list forms • Use a light touch, minimalist approach • In web design tool of choice, eg Dreamweaver • Implement using pure HTML, CSS, and JavaScript Desired Situation Transform SharePoint Forms
  • 7. • Custom master page • SharePoint markup (CAML) • Delegate controls and custom actions • Farm / sandbox solutions • SharePoint Designer • InfoPath forms • Visual Studio Avoid Heavy-Weight Solution Transform SharePoint Forms
  • 8. Based on Mark Rackley’s original approach, Easy Custom Layouts for Default SharePoint Forms • Modify Default List Form Web Parts • Use Content Editor webparts to inject HTML and JavaScript • Inject alternate HTML “form” to define new layout • Inject JavaScript to move SP fields to new layout Acknowledgements Transform SharePoint Forms
  • 9. • Add CSS to Default New, Display and Edit forms • Inject text and HTML using JavaScript • Use any supported HTML, CSS, and JavaScript • Use any JavaScript framework • Eg, jQuery, jQuery UI and plugins Style Existing “Forms” Transform SharePoint Forms
  • 10. • Create a styles markup page in Site Assets library: <script src="//code.jquery.com/jquery-1.10.1.min.js"></script> <style type="text/css"> .ms-formlabel h3.ms-standardheader {font-weight:bold; text-align: right; padding-right: 10px;} </style> <script> $(document).ready(function() { $(".ms-formlabel h3.ms-standardheader").each(function(){ $(this).append(“ :"); }); }); </script> Style Existing “Forms” Transform SharePoint Forms
  • 11. • Load jQuery: <script src="//code.jquery.com/jquery-1.10.1.min.js"></script> <style type="text/css"> .ms-formlabel h3.ms-standardheader {font-weight:bold; text-align: right; padding-right: 10px;} </style> <script> $(document).ready(function() { $(".ms-formlabel h3.ms-standardheader").each(function(){ $(this).append(“ :"); }); }); </script> Style Existing “Forms” Transform SharePoint Forms
  • 12. • Apply font / align / pad style to field header: <script src="//code.jquery.com/jquery-1.10.1.min.js"></script> <style type="text/css"> .ms-formlabel h3.ms-standardheader {font-weight:bold; text-align: right; padding-right: 10px;} </style> <script> $(document).ready(function() { $(".ms-formlabel h3.ms-standardheader").each(function(){ $(this).append(“ :"); }); }); </script> Style Existing “Forms” Transform SharePoint Forms
  • 13. • Inject text into DOM: <script src="//code.jquery.com/jquery-1.10.1.min.js"></script> <style type="text/css"> .ms-formlabel h3.ms-standardheader {font-weight:bold; text-align: right; padding-right: 10px;} </style> <script> $(document).ready(function() { $(".ms-formlabel h3.ms-standardheader").each(function(){ $(this).append(“ :"); }); }); </script> Style Existing “Forms” Transform SharePoint Forms
  • 14. • Edit each of the New, Display and Edit forms Style Existing “Forms” Transform SharePoint Forms
  • 15. • Add a Content Editor web part Style Existing “Form” Transform SharePoint Forms
  • 16. • Link to styles markup page Style Existing “Form” Transform SharePoint Forms
  • 17. • Note style changes Style Existing “Form” Transform SharePoint Forms
  • 18. • Final result Style Existing “Form” Transform SharePoint Forms
  • 19. • Style existing form Demo #1 Transform SharePoint Forms
  • 20. • Add Custom HTML “form” table to Default New, Display and Edit forms • Move Edit Controls into a Custom HTML “form” table • Hide OOTB HTML “form” table • Use any supported HTML, CSS, and JavaScript • Use any JavaScript framework • Eg, jQuery, jQuery UI and plugins Design Custom HTML “Form” Transform SharePoint Forms
  • 21. • Create a form layout page in Site Assets library: <table cellpadding="5" cellspacing="5" bgcolor="#CCCCCC" > <tr> <td> <b>Title:</b><br> <span class="customForm" data-internalName="Title"></span> </td> <td> <b>Issue Status:</b><br> <span class="customForm" data-internalName="Status"></span> </td> </tr> ... </table> Design Custom HTML “Form” Transform SharePoint Forms
  • 22. • Apply styling <table cellpadding="5" cellspacing="5" bgcolor="#CCCCCC" > <tr > <td> <b>Title:</b><br> <span class="customForm" data-internalName="Title"></span> </td> <td> <b>Issue Status:</b><br> <span class="customForm" data-internalName="Status"></span> </td> </tr> ... </table> Design Custom HTML “Form” Transform SharePoint Forms
  • 23. • Use placeholder for moved fields <table cellpadding="5" cellspacing="5" bgcolor="#CCCCCC" > <tr > <td> <b>Title:</b><br> <span class="customForm" data-internalName="Title"></span> </td> <td> <b>Issue Status:</b><br> <span class="customForm" data-internalName="Status"></span> </td> </tr> ... </table> Design Custom HTML “Form” Transform SharePoint Forms
  • 24. • Create a move fields script in Site Assets library: <!– include jQuery --> <script> $(document).ready(function() { $("span.customForm").each(function() { internalName = $(this).attr("data-internalName"); elem = $(this); $("table.ms-formtable td").each(function(){ if (this.innerHTML.indexOf( 'FieldInternalName="'+internalName+'"') != -1){ $(this).contents().appendTo(elem); } }); }); }); </script> Design Custom HTML “Form” Transform SharePoint Forms
  • 25. • Traverse placeholders in custom form <!– include jQuery --> <script> $(document).ready(function() { $("span.customForm").each(function() { internalName = $(this).attr("data-internalName"); elem = $(this); $("table.ms-formtable td").each(function(){ if (this.innerHTML.indexOf( 'FieldInternalName="'+internalName+'"') != -1){ $(this).contents().appendTo(elem); } }); }); }); </script> Design Custom HTML “Form” Transform SharePoint Forms
  • 26. • Find corresponding fields in OOTB form <!– include jQuery --> <script> $(document).ready(function() { $("span.customForm").each(function() { internalName = $(this).attr("data-internalName"); elem = $(this); $("table.ms-formtable td").each(function(){ if (this.innerHTML.indexOf( 'FieldInternalName="'+internalName+'"') != -1){ $(this).contents().appendTo(elem); } }); }); }); </script> Design Custom HTML “Form” Transform SharePoint Forms
  • 27. • Move fields from OOTB form to custom form <!– include jQuery --> <script> $(document).ready(function() { $("span.customForm").each(function() { internalName = $(this).attr("data-internalName"); elem = $(this); $("table.ms-formtable td").each(function(){ if (this.innerHTML.indexOf( 'FieldInternalName="'+internalName+'"') != -1){ $(this).contents().appendTo(elem); } }); }); }); </script> Design Custom HTML “Form” Transform SharePoint Forms
  • 28. • Add two Content Editor web parts Custom HTML “Form” Transform SharePoint Forms
  • 29. • Link first to custom HTML “form” layout page Custom HTML “Form” Transform SharePoint Forms
  • 30. • Link second to move fields script Custom HTML “Form” Transform SharePoint Forms
  • 31. • Note layout changes Custom HTML “Form” Transform SharePoint Forms
  • 32. • Final result Custom HTML “Form” Transform SharePoint Forms
  • 33. • Simple TABLE-based layout Demo #2 Transform SharePoint Forms
  • 34. • Add Custom Tab “form” • Move Edit Controls into Custom Tab “form” • Hide OOTB HTML “form” table • Use any supported HTML, CSS, and JavaScript • Use any JavaScript framework • Eg, jQuery, jQuery UI and plugins Design Custom Tab “Form” Transform SharePoint Forms
  • 35. • Create a form layout page in Site Assets library: <div id="tabs"> <ul> <li><a href="#tabs-1">General</a></li> <li><a href="#tabs-2">Description</a></li> <li><a href="#tabs-3">Related</a></li> </ul> <div id="tabs-1"> <div class="table"> <div class="row"> <b>Title:</b><br> <span class="customForm" data-internalName="Title"></span> </div><br/> <div class="row"> <b>Issue Status:</b><br> <span class="customForm" data-internalName="Status"></span> </div><br/> ... </div> Design Custom Tab “Form” Transform SharePoint Forms
  • 36. • Define tabs: <div id="tabs"> <ul> <li><a href="#tabs-1">General</a></li> <li><a href="#tabs-2">Description</a></li> <li><a href="#tabs-3">Related</a></li> </ul> <div id="tabs-1"> <div class="table"> <div class="row"> <b>Title:</b><br> <span class="customForm" data-internalName="Title"></span> </div><br/> <div class="row"> <b>Issue Status:</b><br> <span class="customForm" data-internalName="Status"></span> </div><br/> ... </div> Design Custom Tab “Form” Transform SharePoint Forms
  • 37. • Use placeholders for moved fields: <div id="tabs"> <ul> <li><a href="#tabs-1">General</a></li> <li><a href="#tabs-2">Description</a></li> <li><a href="#tabs-3">Related</a></li> </ul> <div id="tabs-1"> <div class="table"> <div class="row"> <b>Title:</b><br> <span class="customForm" data-internalName="Title"></span> </div><br/> <div class="row"> <b>Issue Status:</b><br> <span class="customForm" data-internalName="Status"></span> </div><br/> ... </div> Design Custom Tab “Form” Transform SharePoint Forms
  • 38. • Enable jQuery UI tabs in move fields script: <script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script> <script> $(function() { var css = "//code.jquery.com/ui/1.11.4/themes/smoothness/jquery- ui.css"; document.createStyleSheet(css); $( "#tabs" ).tabs(); }); </script> Design Custom Tab “Form” Transform SharePoint Forms
  • 39. • Inject stylesheet reference for tab styling: <script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script> <script> $(function() { var css = "//code.jquery.com/ui/1.11.4/themes/smoothness/jquery- ui.css"; document.createStyleSheet(css); $( "#tabs" ).tabs(); }); </script> Design Custom Tab “Form” Transform SharePoint Forms
  • 40. • Activate jQueryUI tabs: <script src="//code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script> <script> $(function() { var css = "//code.jquery.com/ui/1.11.4/themes/smoothness/jquery- ui.css"; document.createStyleSheet(css); $( "#tabs" ).tabs(); }); </script> Design Custom Tab “Form” Transform SharePoint Forms
  • 41. • Add two Content Editor web parts Custom Tab “Form” Transform SharePoint Forms
  • 42. • Link first to custom tab “form” layout page Custom Tab “Form” Transform SharePoint Forms
  • 43. • Link second to enhanced move fields script Custom Tab “Form” Transform SharePoint Forms
  • 44. • Note layout changes Custom Tab “Form” Transform SharePoint Forms
  • 45. • Final result Custom Tab “Form” Transform SharePoint Forms
  • 46. • DIV-based layout with tabs Demo #3 Transform SharePoint Forms
  • 47. • Pure web-based solution (HTML, CSS, JavaScript) • Does not require SharePoint Designer or InfoPath • Requires only limited permissions • Manage Lists for initial config of web parts on default forms • Edit document to revise HTML or Tab “form” layout Pros of Custom “Form” Transform SharePoint Forms
  • 48. • Field list on “form” is hard coded not dynamic • List column management not tied to “form” design • Field titles are initially hard coded (eg unilingual), but additional line of JavaScript will move them as well Cons of Custom “Form” Transform SharePoint Forms
  • 49. • Learn JavaScript • Learn SharePoint’s flavour of JavaScript, its objects, helper functions, and APIs • Customize a SharePoint View / Edit form with an embedded HTML form • Customize a SharePoint field on a View / Edit form with a field display template • Never again leave an ugly OOTB SharePoint form as is! Next Steps Transform SharePoint Forms
  • 50. • Mark Rackley – Easy Custom Layouts for Default SharePoint Forms (blog) • Martin Hatch – JSLink and Display Templates (blog) • Todd Bleeker – Custom Forms and Conditional Formatting in SharePoint 2013 (conference) • Sly Gryphon – Ways to load jQuery in SharePoint (2010/2013) Resources Transform SharePoint Forms
  • 51. • John Calvert, Chief Architect • Software Craft, Inc. • john at softwarecraft dot ca • softwarecraft dot ca • at softwarecraft99 Contact Me Transform SharePoint Forms