RE: Suitescript 2.0 client scripts triggers on every field change
Hi. I am trying to create a client script which loads a custom form depending on the subsidiary selected.
The following code does that. However, now every field change is resulting in the form reloading
Why is it doing this? How do I stop this so that it only works on a change in the subsidiary field?
/** *@NApiVersion 2.x *@NScriptType ClientScript */ define(["N/runtime", "N/url", "N/log"], function (runtime, url, log) { /** * @param {ClientScriptContext.fieldChanged} context */ //test function fieldChanged(context) { var scriptObj = runtime.getCurrentScript(); var param = scriptObj.getParameter("custscript_formid_1"); var subParam = scriptObj.getParameter("custscript_subsidiary_1"); var defaultForm = scriptObj.getParameter("custscript_default_form"); var currentRecord = context.currentRecord; var subsidiary = context.currentRecord.getValue("subsidiary"); // if (context.fieldId == "subsidiary") { // if (subsidiary == subParam) { // currentRecord.setValue({ // fieldId: "customform", // value: param, // }); // } else { // currentRecord.setValue({ // fieldId: "customform", // value: defaultForm, // }); // } // } var currentUrl = document.location; var url = new URL(currentUrl); if (context.fieldId == "subsidiary") { } if (subsidiary == subParam) url.searchParams.set("cf", param), url.searchParams.set("subsidiary", subParam), (window.onbeforeunload = null), window.location.assign(url); else url.searchParams.set("cf", defaultForm), url.searchParams.set("subsidiary", subsidiary), (window.onbeforeunload = null), window.location.assign(url); } return { fieldChanged: fieldChanged, }; });
Actually, I realised the issue as soon as I posted this:
Lines 38-39
if (context.fieldId == "subsidiary") { }
The closing bracket for this function needs to be after line 51