Examples of Advance HubSpot Form Method Part 2- onFormReady [Hacks]

In my last post describing Advance HubSpot Form Embedding, I gave a few example of "onFormSubmit" behaviors. Today I would like to share how to modify values of form input fields in both 'Raw HTML' forms and 'regular' HubSpot forms.

HubSpot documentation is a bit lacking in regards on how to make it work - just recently they have added the following paragraph regarding the requirement of usage of 'trigger('change')' in jQuery to make input field value modification work - and yet even this does not cover what one need to do if he wishes to change the value of the submit button.

Please note that I'm not a developer - The examples below are served mostly as a way to 'open' your appetite for more advance use cases with HubSpot forms:

HubSpot onFormSubmit example - 'normal' forms

As HubSpot form validation refreshs the value of the submit button, it is nececeray, AFAIK, to hide the button and create a new one if you wish to change the text of the button. The rest of the input fields work just fine by using .prop/.attr and triggering a change as shown in HubSpot developer documentation.

HubSpot formatted forms (unlike 'raw html') are injected to the page inside an iframe, therefore their selectors differ a bit than the 'raw html' example coming next.

  
    <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>

	<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js">
	<script>
		hbspt.forms.create({
			portalId: "469680",
			formId: "2f602927-8810-46be-8184-e766f7cdd04b",
			
			onFormReady: function($form) {
				var iframe = $('#hs-form-iframe-0');
				$('input[type=email]',iframe.contents()).attr('value', 'test2').trigger('change');
				
				$('input[type=submit]',iframe.contents()).hide()
				$('.actions',iframe.contents()).append($('<input type="submit" value="Custom Submit Name" class="hs-button primary large" data-reactid=".hbspt-forms-0.5.1.0"/>'));
			}
			
		});
	</script>

  

The Result

HubSpot onFormSubmit example - 'Raw HTML' forms

  
	<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>

	<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js">
	<script>
		hbspt.forms.create({
			portalId: "469680",
			formId: "3318761a-4f13-421b-9b4f-1244206df4ed",
			
		onFormReady: function($form) {
				$('input[type=email]').attr('value', 'test2').trigger('change');

				$('input[type=submit]').hide()
				$('form').append($('<input type="submit" value="Custom Submit Name"/>'));
			}
			
		});
	</script>

  

The Result

 

I wish to thank Erez Shinan for pointing me into the right direction regarding the form behavior upon validation!