posted on February 20

Just wanted to share this on here. I had to write javascript code to verify that the end user does not add an item to a collection more than once on the modern designer. I also used show hide rules to show the error based on a number field defaulted to 0. 

function validateUniqueness() {
  //fieldID for the variable that needs to be validated as unique in the collection/table.
  let items = LFForm.getFieldValues({ fieldId: 101 });
  let len;
  let newItem;
  let existingItems;
  //confirms field being validated is an array.
  if (Array.isArray(items)) {
    len = items.length-1;
    newItem  = items[len];
    existingItems = items.slice(0, len);
    //validates the field and updates the necessary form variables.
    if (existingItems.includes(newItem)) {
      //fieldID for the variable that triggers the error custom html field.
      LFForm.setFieldValues({fieldId: 106, index: len}, 1);
      //fieldID for the collection/table
      LFForm.changeFieldSettings( {fieldId: 100}, {addButtonLabel: " "} );
    }
    else {
      //fieldID for the variable that triggers the error custom html field.
      LFForm.setFieldValues({fieldId: 106, index: len}, 0);
      //fieldID for the collection/table
      LFForm.changeFieldSettings( {fieldId: 100}, {addButtonLabel: "+ Add"} );
    }
  }
}
//fieldID for the variable that needs to be validated as unique in the collection/table.
LFForm.onFieldChange(validateUniqueness, { fieldId: 101 });

Here is an example of what the collection looks like when a duplicate item is entered, it also makes it so that they can't add another row until they select a different item because it sets the tables add field to just a blank.

Just change the field ids in the code to your field ids in your form. Hope this is useful to others.

5 0