Unable to Hide Field when i Choose None Option

rajeshraji1
Tera Contributor

I have created three choice include none, All my choices work as expected but when i choose choice 1 to None it fail to hide the filed and same for choice 2 and 3 as well kindly  need clarity on this.

 


function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading && newValue === '') {
        return; // Prevent running during initial load if newValue is empty
    }
    if (newValue === oldValue) {
        return;
    }
    handleEmployeeTypeChange(newValue);
}

function handleEmployeeTypeChange(selectedType) {
    // Field names

    var employeeNameField = 'employee_name';
    var employeeIdField = 'employee_id';
    var traineeNameField = 'trainee_name';
    var traineeIdField = 'trainee_id';
    var studentNameField = 'student_name';
    var studentIdField = 'student_id';

    // Function to set field visibility and mandatory status
    function setFieldDisplayAndMandatory(fieldName, visible, mandatory) {
        g_form.setDisplay(fieldName, visible);
        g_form.setMandatory(fieldName, mandatory);
    }

    // Initially hide and make all fields non-mandatory
    setFieldDisplayAndMandatory(employeeNameField, false, false);
    setFieldDisplayAndMandatory(employeeIdField, false, false);
    setFieldDisplayAndMandatory(traineeNameField, false, false);
    setFieldDisplayAndMandatory(traineeIdField, false, false);
    setFieldDisplayAndMandatory(studentNameField, false, false);
    setFieldDisplayAndMandatory(studentIdField, false, false);

    // Show and set mandatory based on the selected choice
    if (selectedType === '') {
        setFieldDisplayAndMandatory(employeeNameField, false, false);
        setFieldDisplayAndMandatory(employeeIdField, false, false);
        setFieldDisplayAndMandatory(traineeNameField, false, false);
        setFieldDisplayAndMandatory(traineeIdField, false, false);
        setFieldDisplayAndMandatory(studentNameField, false, false);
        setFieldDisplayAndMandatory(studentIdField, false, false);
    } else if (selectedType === 'newemployee') {
        setFieldDisplayAndMandatory(employeeNameField, true, true);
        setFieldDisplayAndMandatory(employeeIdField, true, true);
        setFieldDisplayAndMandatory(traineeNameField, false, false);
        setFieldDisplayAndMandatory(traineeIdField, false, false);
        setFieldDisplayAndMandatory(studentNameField, false, false);
        setFieldDisplayAndMandatory(studentIdField, false, false);
    } else if (selectedType === 'trainee') {
        setFieldDisplayAndMandatory(employeeNameField, false, false);
        setFieldDisplayAndMandatory(employeeIdField, false, false);
        setFieldDisplayAndMandatory(traineeNameField, true, true);
        setFieldDisplayAndMandatory(traineeIdField, true, true);
        setFieldDisplayAndMandatory(studentNameField, false, false);
        setFieldDisplayAndMandatory(studentIdField, false, false);
    } else if (selectedType === 'student') {
        setFieldDisplayAndMandatory(studentNameField, true, true);
        setFieldDisplayAndMandatory(studentIdField, true, true);
        setFieldDisplayAndMandatory(employeeNameField, false, false);
        setFieldDisplayAndMandatory(employeeIdField, false, false);
        setFieldDisplayAndMandatory(traineeNameField, false, false);
        setFieldDisplayAndMandatory(traineeIdField, false, false);
    }
 
}
  // If 'none' or any other value is selected, the fields remain hidden 
 

 

6 REPLIES 6

J Siva
Tera Sage

Hi @rajeshraji1 
You can acheive the sam eby using (catalog) UI policy to acheive your requirement without scripting.
Could you share more info on the requirement?
Regards,
Siva

Ankur Bawiskar
Tera Patron
Tera Patron

@rajeshraji1 

try this script once

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading) {
        return; // Prevent running during initial load
    }
    if (newValue === oldValue) {
        return;
    }
    handleEmployeeTypeChange(newValue);
}

function handleEmployeeTypeChange(selectedType) {
    // Field names
    var employeeNameField = 'employee_name';
    var employeeIdField = 'employee_id';
    var traineeNameField = 'trainee_name';
    var traineeIdField = 'trainee_id';
    var studentNameField = 'student_name';
    var studentIdField = 'student_id';

    // Function to set field visibility and mandatory status
    function setFieldDisplayAndMandatory(fieldName, visible, mandatory) {
        g_form.setDisplay(fieldName, visible);
        g_form.setMandatory(fieldName, mandatory);
    }

    // Initially hide and make all fields non-mandatory
    setFieldDisplayAndMandatory(employeeNameField, false, false);
    setFieldDisplayAndMandatory(employeeIdField, false, false);
    setFieldDisplayAndMandatory(traineeNameField, false, false);
    setFieldDisplayAndMandatory(traineeIdField, false, false);
    setFieldDisplayAndMandatory(studentNameField, false, false);
    setFieldDisplayAndMandatory(studentIdField, false, false);

    // Show and set mandatory based on the selected choice
    if (selectedType === 'none' || selectedType === '') {
        // Hide all fields
        setFieldDisplayAndMandatory(employeeNameField, false, false);
        setFieldDisplayAndMandatory(employeeIdField, false, false);
        setFieldDisplayAndMandatory(traineeNameField, false, false);
        setFieldDisplayAndMandatory(traineeIdField, false, false);
        setFieldDisplayAndMandatory(studentNameField, false, false);
        setFieldDisplayAndMandatory(studentIdField, false, false);
    } else if (selectedType === 'newemployee') {
        setFieldDisplayAndMandatory(employeeNameField, true, true);
        setFieldDisplayAndMandatory(employeeIdField, true, true);
    } else if (selectedType === 'trainee') {
        setFieldDisplayAndMandatory(traineeNameField, true, true);
        setFieldDisplayAndMandatory(traineeIdField, true, true);
    } else if (selectedType === 'student') {
        setFieldDisplayAndMandatory(studentNameField, true, true);
        setFieldDisplayAndMandatory(studentIdField, true, true);
    }
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi @Ankur Bawiskar  This script is not working none and empty i used this same but no change.

Not working