diff --git a/README.md b/README.md index 54e8ab8..40a2bec 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ The full set of options is as follows: 'navigationFunction': function(pages){}, // a function that generates the nav, receives array of pages 'stateFunction': function(page){}, // a function that shows what page the user is viewing, receives current page # 'transitionFunction': function(from,to){} // a function that transitions from one page $(from) to another $(to) + 'validatePageFunction': function(page){} // a function that can prevent transition by returning false }); diff --git a/jquery.multipage.js b/jquery.multipage.js old mode 100644 new mode 100755 index 7be5bf8..fc31ec6 --- a/jquery.multipage.js +++ b/jquery.multipage.js @@ -35,7 +35,7 @@ jQuery.fn.gotopage = function(page) { - $(id + '_nav .multipage_next').html('Next'); + $(id + '_nav .multipage_next').html(settings.nextLabel); if (isNaN(page)) { q = page; @@ -76,9 +76,9 @@ $(id + '_nav .multipage_back').hide(); $(id + '_nav .multipage_next').show(); if (settings.pages[page].title) { - $(id + '_nav .multipage_next').html('Next: ' + settings.pages[page].title); + $(id + '_nav .multipage_next').html(settings.nextLabel + ': ' + settings.pages[page].title); } else { - $(id + '_nav .multipage_next').html('Next'); + $(id + '_nav .multipage_next').html(settings.nextLabel); } } else if (page==settings.pages.length) { @@ -87,9 +87,9 @@ $(id + '_nav .multipage_next').show(); if (settings.pages[page-2].title) { - $(id + '_nav .multipage_back').html('Back: ' + settings.pages[page-2].title); + $(id + '_nav .multipage_back').html(settings.backLabel + ': ' + settings.pages[page-2].title); } else { - $(id + '_nav .multipage_back').html('Back'); + $(id + '_nav .multipage_back').html(settings.backLabel); } $(id + '_nav .multipage_next').addClass('submit'); @@ -97,14 +97,14 @@ } else { if (settings.pages[page-2].title) { - $(id + '_nav .multipage_back').html('Back: ' + settings.pages[page-2].title); + $(id + '_nav .multipage_back').html(settings.backLabel + ': ' + settings.pages[page-2].title); } else { - $(id + '_nav .multipage_back').html('Back'); + $(id + '_nav .multipage_back').html(settings.backLabel); } if (settings.pages[page].title) { - $(id + '_nav .multipage_next').html('Next: ' + settings.pages[page].title); + $(id + '_nav .multipage_next').html(settings.nextLabel + ': ' + settings.pages[page].title); } else { - $(id + '_nav .multipage_next').html('Next'); + $(id + '_nav .multipage_next').html(settings.nextLabel); } $(id + '_nav .multipage_back').show(); @@ -118,9 +118,13 @@ } - jQuery.fn.validatePage = function(page) { - return true; - } + jQuery.fn.validatePage = function(page) { + if (settings.validatePageFunction) { + return settings.validatePageFunction(page); + } else { + return true; + } + } jQuery.fn.validateAll = function() { @@ -180,8 +184,7 @@ jQuery.fn.multipage = function(options) { - - settings = jQuery.extend({stayLinkable:false,submitLabel:'Submit',hideLegend:false,hideSubmit:true,generateNavigation:true,activeDot:' ●',inactiveDot:' ·'},options); + settings = jQuery.extend({stayLinkable:false,submitLabel:'Submit',nextLabel:'Next',backLabel:'Back',hideLegend:false,hideSubmit:true,generateNavigation:true,activeDot:' ●',inactiveDot:' ·'},options); id = '#' + $(this).attr('id'); var form = $(this); @@ -196,11 +199,11 @@ // hide all the pages $(id +' fieldset').hide(); if (settings.hideSubmit) { - $(id+' input[type="submit"]').hide(); + $(id+' *[type="submit"]').hide(); } - if ($(id+' input[type="submit"]').val()!='') { - settings.submitLabel = $(id+' input[type="submit"]').val(); + if ($(id+' *[type="submit"]').val()!='') { + settings.submitLabel = $(id+' *[type="submit"]').val(); } settings.pages = new Array();