Create "Name" of record based on Multiple Text Property Values
SOLVE
There's this page, specifically the example of running a script when a form submits. If you have a hidden field in your form for the ticket name, you could do something like this on submit (I've put in guesses as to what the field names would be):
<!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
hbspt.forms.create({
portalId: "[PORTAL ID]",
formId: "[FORM ID]",
onFormSubmit: function(form){
var firstName = form.querySelector('input[name="firstname"]').value;
var lastName = form.querySelector('input[name="lastname"]').value;
var leadSource = form.querySelector('input[name="lead_source"]').value;
var date = new Date();
date = date.toLocaleDateString('en-GB'); // will give you date in dd/mm/yyyy format
form.querySelector('input[name="ticket_name"]').value = `${firstName} ${lastName} - ${leadSource} ${date}`;
}
});
</script>
There's one downside to this method. If you're redirecting to another page, e.g. a thank you page, that redirection might happen before the above code executes and the form is sent. It would be fine with a thank you message.
Another method, which will make sure data is changed and sent before any redirection happens if you're using a redirect, is this:
{% form
form_to_use="{{ module.form.form_id }}"
response_response_type="{{ module.form.response_type }}"
response_message="{{ module.form.message }}"
%}
{% if module.form.redirect_id %}
<script>
window.addEventListener('message', event => {
if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmit') {
let firstName = event.data.data.find(o => o.name === 'firstname');
let lastName = event.data.data.find(o => o.name === 'lastname');
let leadSource = event.data.data.find(o => o.name === 'lead_source');
var date = new Date();
date = date.toLocaleDateString('en-GB'); // will give you date in dd/mm/yyyy format
form.querySelector('input[name="ticket_name"]').value = `${firstName.value} ${lastName.value} - ${leadSource.value} ${date}`;
}
if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
{% set redirect = content_by_id(module.form.redirect_id) %}
window.location = '{{redirect.absolute_url}}'
}
});
</script>
{% endif %}
Create "Name" of record based on Multiple Text Property Values
SOLVE
There's this page, specifically the example of running a script when a form submits. If you have a hidden field in your form for the ticket name, you could do something like this on submit (I've put in guesses as to what the field names would be):
<!--[if lte IE 8]>
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2-legacy.js"></script>
<![endif]-->
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/v2.js"></script>
<script>
hbspt.forms.create({
portalId: "[PORTAL ID]",
formId: "[FORM ID]",
onFormSubmit: function(form){
var firstName = form.querySelector('input[name="firstname"]').value;
var lastName = form.querySelector('input[name="lastname"]').value;
var leadSource = form.querySelector('input[name="lead_source"]').value;
var date = new Date();
date = date.toLocaleDateString('en-GB'); // will give you date in dd/mm/yyyy format
form.querySelector('input[name="ticket_name"]').value = `${firstName} ${lastName} - ${leadSource} ${date}`;
}
});
</script>
There's one downside to this method. If you're redirecting to another page, e.g. a thank you page, that redirection might happen before the above code executes and the form is sent. It would be fine with a thank you message.
Another method, which will make sure data is changed and sent before any redirection happens if you're using a redirect, is this:
{% form
form_to_use="{{ module.form.form_id }}"
response_response_type="{{ module.form.response_type }}"
response_message="{{ module.form.message }}"
%}
{% if module.form.redirect_id %}
<script>
window.addEventListener('message', event => {
if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmit') {
let firstName = event.data.data.find(o => o.name === 'firstname');
let lastName = event.data.data.find(o => o.name === 'lastname');
let leadSource = event.data.data.find(o => o.name === 'lead_source');
var date = new Date();
date = date.toLocaleDateString('en-GB'); // will give you date in dd/mm/yyyy format
form.querySelector('input[name="ticket_name"]').value = `${firstName.value} ${lastName.value} - ${leadSource.value} ${date}`;
}
if(event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
{% set redirect = content_by_id(module.form.redirect_id) %}
window.location = '{{redirect.absolute_url}}'
}
});
</script>
{% endif %}