{"id":16342,"date":"2026-08-24T20:14:46","date_gmt":"2026-08-24T20:14:46","guid":{"rendered":"https:\/\/www.ntsprint.com\/?page_id=16342"},"modified":"2026-09-23T16:49:17","modified_gmt":"2026-09-23T16:49:17","slug":"product-form","status":"publish","type":"page","link":"https:\/\/ntsprint.com\/es\/product-form\/","title":{"rendered":"Quiero mejorar un producto existente"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"16342\" class=\"elementor elementor-16342\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-21e92cfb e-flex e-con-boxed e-con e-parent\" data-id=\"21e92cfb\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-7989d5f9 e-grid e-con-full e-con e-child\" data-id=\"7989d5f9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-1789568 e-con-full e-flex e-con e-child\" data-id=\"1789568\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-76dd420 e-con-full e-flex e-con e-child\" data-id=\"76dd420\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2868253 elementor-widget elementor-widget-heading\" data-id=\"2868253\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Tell us about your product<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b60ef99 elementor-widget elementor-widget-heading\" data-id=\"b60ef99\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Share what exists today and what you\u2019d like to improve.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-92cc134 elementor-widget elementor-widget-html\" data-id=\"92cc134\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n  const selects = document.querySelectorAll('form select');\r\n\r\n  selects.forEach(select => {\r\n    const firstOption = select.querySelector('option:first-child');\r\n    if (firstOption) {\r\n      firstOption.disabled = true;\r\n      firstOption.selected = true;\r\n    }\r\n  });\r\n});\r\n<\/script>\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n  const checkboxGroup = document.querySelectorAll('[id^=\"form-field-checkbox_alive-\"]');\r\n  const productLinkGroup = document.querySelector('.elementor-field-group-product_link');\r\n\r\n  if (!checkboxGroup.length || !productLinkGroup) return;\r\n\r\n  const toggleInput = () => {\r\n    const checkedValues = Array.from(checkboxGroup)\r\n      .filter(input => input.checked)\r\n      .map(input => input.value.trim());\r\n\r\n    const show = checkedValues.length > 0 && !checkedValues.includes('No');\r\n\r\n    productLinkGroup.style.display = show ? '' : 'none';\r\n  };\r\n\r\n  checkboxGroup.forEach(input => {\r\n    input.addEventListener('change', toggleInput);\r\n  });\r\n\r\n productLinkGroup.style.display = 'none';\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20a755d elementor-button-align-stretch elementor-widget elementor-widget-form\" data-id=\"20a755d\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"product-form\" data-settings=\"{&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"New Form\" aria-label=\"New Form\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"16342\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"20a755d\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"\" \/>\n\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-name\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tFull name\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[name]\" id=\"form-field-name\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"Enter your name\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-email elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-email\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tWork email\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"email\" name=\"form_fields[email]\" id=\"form-field-email\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"you@company.com\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-company elementor-col-100 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-company\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tCompany or organization name\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[company]\" id=\"form-field-company\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"Your company or project name\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-select elementor-field-group elementor-column elementor-field-group-what_type elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-what_type\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tWhat type of product do you have?\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field elementor-select-wrapper remove-before \">\n\t\t\t<div class=\"select-caret-down-wrapper\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-caret-down\" viewBox=\"0 0 571.4 571.4\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<select name=\"form_fields[what_type]\" id=\"form-field-what_type\" class=\"elementor-field-textual elementor-size-md\" required=\"required\">\n\t\t\t\t\t\t\t\t\t<option value=\"Select an option\">Select an option<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Web app\">Web app<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Mobile app\">Mobile app<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Internal platform\">Internal platform<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Website\">Website<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Backend \/ API\">Backend \/ API<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Other\">Other<\/option>\n\t\t\t\t\t\t\t<\/select>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-select elementor-field-group elementor-column elementor-field-group-main_priority elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-main_priority\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tWhat is your main priority?\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field elementor-select-wrapper remove-before \">\n\t\t\t<div class=\"select-caret-down-wrapper\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-caret-down\" viewBox=\"0 0 571.4 571.4\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<select name=\"form_fields[main_priority]\" id=\"form-field-main_priority\" class=\"elementor-field-textual elementor-size-md\" required=\"required\">\n\t\t\t\t\t\t\t\t\t<option value=\"Select an option\">Select an option<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"UX\/UI\">UX\/UI<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"New features or functionality\">New features or functionality<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Performance\">Performance<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Stability \/ bugs\">Stability \/ bugs<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Code quality \/ technical debt\">Code quality \/ technical debt<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Scalability\">Scalability<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Team capacity\">Team capacity<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Not sure yet\">Not sure yet<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Other\">Other<\/option>\n\t\t\t\t\t\t\t<\/select>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-radio elementor-field-group elementor-column elementor-field-group-checkbox_alive elementor-col-100 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-checkbox_alive\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tIs the product already live?\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<div class=\"elementor-field-subgroup  \"><span class=\"elementor-field-option\"><input type=\"radio\" value=\"Yes\" id=\"form-field-checkbox_alive-0\" name=\"form_fields[checkbox_alive]\" required=\"required\"> <label for=\"form-field-checkbox_alive-0\">Yes<\/label><\/span><span class=\"elementor-field-option\"><input type=\"radio\" value=\"In beta \/ limited release\" id=\"form-field-checkbox_alive-1\" name=\"form_fields[checkbox_alive]\" required=\"required\"> <label for=\"form-field-checkbox_alive-1\">In beta \/ limited release<\/label><\/span><span class=\"elementor-field-option\"><input type=\"radio\" value=\"No\" id=\"form-field-checkbox_alive-2\" name=\"form_fields[checkbox_alive]\" required=\"required\"> <label for=\"form-field-checkbox_alive-2\">No<\/label><\/span><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-product_link elementor-col-100\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-product_link\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tProduct link\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[product_link]\" id=\"form-field-product_link\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"App Store, Play Store, website, or product URL\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-message elementor-col-100 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-message\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tWhat\u2019s the main challenge or goal?\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<textarea class=\"elementor-field-textual elementor-field  elementor-size-md\" name=\"form_fields[message]\" id=\"form-field-message\" rows=\"8\" placeholder=\"Tell us what isn\u2019t working today or what you want to achieve.\" required=\"required\"><\/textarea>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-select elementor-field-group elementor-column elementor-field-group-when_start elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-when_start\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tWhen are you looking to start?\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field elementor-select-wrapper remove-before \">\n\t\t\t<div class=\"select-caret-down-wrapper\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-caret-down\" viewBox=\"0 0 571.4 571.4\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<select name=\"form_fields[when_start]\" id=\"form-field-when_start\" class=\"elementor-field-textual elementor-size-md\" required=\"required\">\n\t\t\t\t\t\t\t\t\t<option value=\"Select an option\">Select an option<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"As soon as possible\">As soon as possible<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Within 1 month\">Within 1 month<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"1 \u2013 3 months\">1 \u2013 3 months<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"3+ months\">3+ months<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Not sure yet\">Not sure yet<\/option>\n\t\t\t\t\t\t\t<\/select>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-select elementor-field-group elementor-column elementor-field-group-estimated_budget elementor-col-50 elementor-field-required elementor-mark-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-estimated_budget\" class=\"elementor-field-label\">\n\t\t\t\t\t\t\t\tEstimated budget\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field elementor-select-wrapper remove-before \">\n\t\t\t<div class=\"select-caret-down-wrapper\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-caret-down\" viewBox=\"0 0 571.4 571.4\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M571 393Q571 407 561 418L311 668Q300 679 286 679T261 668L11 418Q0 407 0 393T11 368 36 357H536Q550 357 561 368T571 393Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<select name=\"form_fields[estimated_budget]\" id=\"form-field-estimated_budget\" class=\"elementor-field-textual elementor-size-md\" required=\"required\">\n\t\t\t\t\t\t\t\t\t<option value=\"Select an option\">Select an option<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Under $5k\">Under $5k<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"$5k \u2013 $10k\">$5k \u2013 $10k<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"$10k \u2013 $20k\">$10k \u2013 $20k<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"$20k+\">$20k+<\/option>\n\t\t\t\t\t\t\t\t\t<option value=\"Not sure yet\">Not sure yet<\/option>\n\t\t\t\t\t\t\t<\/select>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-xs\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Submit Inquiry<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a7a191 elementor-widget elementor-widget-html\" data-id=\"6a7a191\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n    const form = document.getElementById(\"product-form\");\r\n\r\n    if (!form) {\r\n        return;\r\n    }\r\n\r\n    const fields = {\r\n        name: {\r\n            element: form.querySelector(\"#form-field-name\"),\r\n            type: \"text\",\r\n            minLength: 3\r\n        },\r\n        email: {\r\n            element: form.querySelector(\"#form-field-email\"),\r\n            type: \"email\"\r\n        },\r\n        company: {\r\n            element: form.querySelector(\"#form-field-company\"),\r\n            type: \"text\",\r\n            minLength: 3\r\n        },\r\n        what_type: {\r\n            element: form.querySelector(\"#form-field-what_type\"),\r\n            type: \"select\"\r\n        },\r\n        main_priority: {\r\n            element: form.querySelector(\"#form-field-main_priority\"),\r\n            type: \"select\"\r\n        },\r\n        when_start: {\r\n            element: form.querySelector(\"#form-field-when_start\"),\r\n            type: \"select\"\r\n        },\r\n        estimated_budget: {\r\n            element: form.querySelector(\"#form-field-estimated_budget\"),\r\n            type: \"select\"\r\n        },\r\n        checkbox_alive: {\r\n            element: form.querySelector(\r\n                'input[name=\"form_fields[checkbox_alive]\"]'\r\n            ),\r\n            type: \"radio\"\r\n        },\r\n        message: {\r\n            element: form.querySelector(\"#form-field-message\"),\r\n            type: \"text\",\r\n            minLength: 5\r\n        }\r\n    };\r\n\r\n    const submitButton = form.querySelector(\r\n        \"button[type='submit'], input[type='submit']\"\r\n    );\r\n\r\n    if (!submitButton) {\r\n        return;\r\n    }\r\n\r\n    Object.values(fields).forEach(function (field) {\r\n        field.touched = false;\r\n    });\r\n\r\n    function getErrorMessage(fieldName) {\r\n        const field = fields[fieldName];\r\n\r\n        if (field.type === \"email\") {\r\n            return \"Please enter a valid email address.\";\r\n        }\r\n\r\n        if (field.type === \"select\") {\r\n            return \"Please select an option.\";\r\n        }\r\n\r\n        if (field.type === \"radio\") {\r\n            return \"Please select an option.\";\r\n        }\r\n\r\n        if (field.type === \"text\") {\r\n            if (field.minLength) {\r\n                return \"Please enter at least \" + field.minLength + \" characters.\";\r\n            }\r\n\r\n            return \"This field is required.\";\r\n        }\r\n\r\n        return \"This field is invalid.\";\r\n    }\r\n\r\n    function isValid(fieldName) {\r\n        const field = fields[fieldName];\r\n\r\n        if (!field.element) {\r\n            return false;\r\n        }\r\n\r\n        if (field.type === \"radio\") {\r\n            const radio = form.querySelector(\r\n                'input[name=\"form_fields[' + fieldName + ']\"]:checked'\r\n            );\r\n\r\n            return radio !== null;\r\n        }\r\n\r\n        const value = field.element.value.trim();\r\n\r\n        if (field.type === \"text\") {\r\n            return value.length >= field.minLength;\r\n        }\r\n\r\n        if (field.type === \"email\") {\r\n            return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(value);\r\n        }\r\n\r\n        if (field.type === \"select\") {\r\n            return value !== \"\" && value !== \"Select an option\";\r\n        }\r\n\r\n        return false;\r\n    }\r\n\r\n    function showError(fieldName) {\r\n        const field = fields[fieldName];\r\n\r\n        if (!field.element) {\r\n            return;\r\n        }\r\n\r\n        const fieldWrapper = field.element.closest(\".elementor-field-group\");\r\n\r\n        if (!fieldWrapper) {\r\n            return;\r\n        }\r\n\r\n        let error = fieldWrapper.querySelector(\".project-form-error\");\r\n\r\n        if (!error) {\r\n            error = document.createElement(\"div\");\r\n            error.className = \"project-form-error\";\r\n            fieldWrapper.appendChild(error);\r\n        }\r\n\r\n        error.textContent = getErrorMessage(fieldName);\r\n        error.style.display = \"block\";\r\n\r\n        field.element.classList.add(\"project-form-invalid\");\r\n    }\r\n\r\n    function hideError(fieldName) {\r\n        const field = fields[fieldName];\r\n\r\n        if (!field.element) {\r\n            return;\r\n        }\r\n\r\n        const fieldWrapper = field.element.closest(\".elementor-field-group\");\r\n\r\n        if (!fieldWrapper) {\r\n            return;\r\n        }\r\n\r\n        const error = fieldWrapper.querySelector(\".project-form-error\");\r\n\r\n        if (error) {\r\n            error.style.display = \"none\";\r\n        }\r\n\r\n        field.element.classList.remove(\"project-form-invalid\");\r\n    }\r\n\r\n    function validateField(fieldName, showMessage = false) {\r\n        const valid = isValid(fieldName);\r\n\r\n        if (valid) {\r\n            hideError(fieldName);\r\n        } else if (showMessage) {\r\n            showError(fieldName);\r\n        }\r\n\r\n        return valid;\r\n    }\r\n\r\n    function validateForm() {\r\n        let valid = true;\r\n\r\n        Object.keys(fields).forEach(function (fieldName) {\r\n            const fieldValid = validateField(\r\n                fieldName,\r\n                fields[fieldName].touched\r\n            );\r\n\r\n            if (!fieldValid) {\r\n                valid = false;\r\n            }\r\n        });\r\n\r\n        return valid;\r\n    }\r\n\r\n    function updateSubmitButton() {\r\n        const valid = Object.keys(fields).every(function (fieldName) {\r\n            return isValid(fieldName);\r\n        });\r\n\r\n        submitButton.disabled = !valid;\r\n        submitButton.setAttribute(\r\n            \"aria-disabled\",\r\n            valid ? \"false\" : \"true\"\r\n        );\r\n    }\r\n\r\n    Object.keys(fields).forEach(function (fieldName) {\r\n        const field = fields[fieldName];\r\n\r\n        if (!field.element) {\r\n            return;\r\n        }\r\n\r\n        if (field.type === \"radio\") {\r\n            const radios = form.querySelectorAll(\r\n                'input[name=\"form_fields[' + fieldName + ']\"]'\r\n            );\r\n\r\n            radios.forEach(function (radio) {\r\n                radio.addEventListener(\"change\", function () {\r\n                    field.touched = true;\r\n                    validateField(fieldName, true);\r\n                    updateSubmitButton();\r\n                });\r\n            });\r\n\r\n            return;\r\n        }\r\n\r\n        field.element.addEventListener(\"input\", function () {\r\n            field.touched = true;\r\n            validateField(fieldName, true);\r\n            updateSubmitButton();\r\n        });\r\n\r\n        field.element.addEventListener(\"change\", function () {\r\n            field.touched = true;\r\n            validateField(fieldName, true);\r\n            updateSubmitButton();\r\n        });\r\n\r\n        field.element.addEventListener(\"blur\", function () {\r\n            field.touched = true;\r\n            validateField(fieldName, true);\r\n            updateSubmitButton();\r\n        });\r\n    });\r\n\r\n    form.addEventListener(\"submit\", function (event) {\r\n        Object.keys(fields).forEach(function (fieldName) {\r\n            fields[fieldName].touched = true;\r\n        });\r\n\r\n        const valid = validateForm();\r\n\r\n        updateSubmitButton();\r\n\r\n        if (!valid) {\r\n            event.preventDefault();\r\n            event.stopPropagation();\r\n        }\r\n    });\r\n\r\n    updateSubmitButton();\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b430391 e-con-full e-flex e-con e-child\" data-id=\"b430391\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f9e3714 change-btn elementor-widget elementor-widget-heading\" data-id=\"f9e3714\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">I want to improve an existing product.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c7021ea change-btn elementor-widget elementor-widget-heading\" data-id=\"c7021ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/ntsprint.com\/es\/contact-options\/\">Change<\/a><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b0fa2ca elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-template\" data-id=\"b0fa2ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"container\" data-elementor-id=\"17906\" class=\"elementor elementor-17906\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c770e74 e-con-full e-flex e-con e-child\" data-id=\"c770e74\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-316215ae elementor-widget elementor-widget-heading\" data-id=\"316215ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What happens next<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-401981f0 elementor-widget elementor-widget-heading\" data-id=\"401981f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">1. We review your inquiry<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d3b09cb elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"6d3b09cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ec9472 elementor-widget elementor-widget-heading\" data-id=\"7ec9472\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2. We determine the right next step<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4677cc6 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"4677cc6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-025e271 elementor-widget elementor-widget-heading\" data-id=\"025e271\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">3. Our team follows up accordingly<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tell us about your product Share what exists today and what you\u2019d like to improve. Change<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-16342","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/pages\/16342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/comments?post=16342"}],"version-history":[{"count":170,"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/pages\/16342\/revisions"}],"predecessor-version":[{"id":20944,"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/pages\/16342\/revisions\/20944"}],"wp:attachment":[{"href":"https:\/\/ntsprint.com\/es\/wp-json\/wp\/v2\/media?parent=16342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}