The ability to create ideas and blogs are temporarily disabled. We apologize for the inconvenience.
While the Marketo form builder is quite powerful, there are some edge cases where it doesn't produce quite the result that you're looking for. A common request is to reposition fields after the progressive profiling box, which is a capability that isn't currently available natively. Fortunately, with some javascript tweaks, we can reposition fields freely. Let's take a look at the code:
/*
jQuery must be loaded on the page
use moveMktoField to position the field designated by FieldName relative to the field designated by pivotName
*/
function moveMktoField(fieldName, pivotName, beforeOrAfter){
//find the label element for the field which we want to move
var labelForFieldToMove = $('[for="' + fieldName + '"]');
//find the label element for the field we want to position relative to
var labelForPivot = $('[for="' + pivotName + '"]');
//get the mktoFormRow parent of each
var fieldToMove = getParentWithClass(labelForFieldToMove, "mktoFormRow");
var pivot = getParentWithClass(labelForPivot, "mktoFormRow");
//insert the field before or after the pivot based on the setting
if (beforeOrAfter == "before"){
fieldToMove.insertBefore(pivot);
} else if (beforeOrAfter == "after"){
fieldToMove.insertAfter(pivot);
} else {
console.log("argument 'beforeOrAfter' must be one of 'before' or 'after'");
return null;
}
}
//inserts multiple fields in order where the first in the fields array is adjacent to the pivot, and the last is furthest
function moveMktoFields(fields, pivotName, beforeOrAfter){
moveMktoField(fields[0], pivotName, beforeOrAfter);
for ( i = 1; i < array.length; i++ ){
moveMktoField(fields[i], fields[i - 1], beforeOrAfter);
}
}
function getParentWithClass(elem, withClass) {
//Check the parent to see if it has the desired class
if ( elem.parent().hasClass(withClass) ) {
return elem.parent();
} else {
//if not, call self recursively on the immediate parent
return (getParentWithClass(elem.parent(), withClass) );
}
}
With the above, we can use the moveMktoField function to reposition one field relative to another. You can also use moveMktoFields to move the fields as a group when you pass an array of field names to it. Click here to see a live demo, moving First Name after Last Name.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.