@@ -58,6 +58,9 @@ object.getFormTrackingManager = function (core, trackerId, contextAdder) {
5858 // Filter to determine which form fields should be tracked
5959 var fieldFilter = function ( ) { return true } ;
6060
61+ // Default function applied to all elements, optionally overridden by transform field
62+ var fieldTransform = function ( x ) { return x } ;
63+
6164 /*
6265 * Get an identifier for a form, input, textarea, or select element
6366 */
@@ -123,7 +126,7 @@ object.getFormTrackingManager = function (core, trackerId, contextAdder) {
123126 return function ( e ) {
124127 var elt = e . target ;
125128 var type = ( elt . nodeName && elt . nodeName . toUpperCase ( ) === 'INPUT' ) ? elt . type : null ;
126- var value = ( elt . type === 'checkbox' && ! elt . checked ) ? null : elt . value ;
129+ var value = ( elt . type === 'checkbox' && ! elt . checked ) ? null : fieldTransform ( elt . value ) ;
127130 core . trackFormChange ( getParentFormName ( elt ) , getFormElementName ( elt ) , elt . nodeName , type , helpers . getCssClasses ( elt ) , value , contextAdder ( context ) ) ;
128131 } ;
129132 }
@@ -135,6 +138,9 @@ object.getFormTrackingManager = function (core, trackerId, contextAdder) {
135138 return function ( e ) {
136139 var elt = e . target ;
137140 var innerElements = getInnerFormElements ( elt ) ;
141+ lodash . forEach ( innerElements , function ( innerElement ) {
142+ innerElement . value = fieldTransform ( innerElement . value ) ;
143+ } ) ;
138144 core . trackFormSubmission ( getFormElementName ( elt ) , helpers . getCssClasses ( elt ) , innerElements , contextAdder ( context ) ) ;
139145 } ;
140146 }
@@ -148,6 +154,7 @@ object.getFormTrackingManager = function (core, trackerId, contextAdder) {
148154 if ( config ) {
149155 formFilter = helpers . getFilter ( config . forms , true ) ;
150156 fieldFilter = helpers . getFilter ( config . fields , false ) ;
157+ fieldTransform = helpers . getTransform ( config . fields ) ;
151158 }
152159 } ,
153160
0 commit comments