Need to restrict upto 2 decimal places

Certified Associate Developer

Hi All,

i have floatingpoint field in my UI, i want to restrict user from typing values upto 2 decimal point and Below is my expected results

  • If the user enters 12, it will be rounded off to 12.00
  • If the user enters 12.1, it will be rounded off to 12.10
  • If the user tries to enter 12.678, it will not be allowed. The entry will be cut off at 12.67

but what is the issue am facing is its allowing me to enter more values after decimal point and also if i give round values it's not taking .00 value.

below is my code

a!floatingPointField(
  label: "Dental Premium (Annual)",
  labelPosition: "ABOVE",
  value: ri!intakePreminumDetails['recordType!{4d82eb7f-ba46-46a2-a7dc-969f4ffcf344}GSE_SCL Intake Premium Details.fields.{cef89c65-a133-4766-bbb5-93cbcceddcab}dentalPremium'],
  saveInto: {
    a!save(ri!intakePreminumDetails['recordType!{4d82eb7f-ba46-46a2-a7dc-969f4ffcf344}GSE_SCL Intake Premium Details.fields.{cef89c65-a133-4766-bbb5-93cbcceddcab}dentalPremium'],
    if(a!isNotNullOrEmpty(save!value),fixed(save!value,2),null)),
   
  },
 

my rule input source is recordtype. and which of data type as decimal and also in db its decimal(10,2) .
note(am using external db (sql server management studio) using connected system)

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer

    a!floatingPointField cannot restrict decimal input during typing because it lacks a decimalPlaces parameter and relies on native browser number input behavior.
    Try this

    a!localVariables(
      local!dentalPremium: null,
      a!textField(
        label: "Dental Premium (Annual)",
        labelPosition: "ABOVE",
        refreshAfter: "UNFOCUS",
        value: if(
          a!isNullOrEmpty(local!dentalPremium),
          null,
          text(local!dentalPremium, "0.00")
        ),
        saveInto: a!save(
          local!dentalPremium,
          if(
            a!isNullOrEmpty(save!value),
            null,
            floor(todecimal(save!value) * 100) / 100
          )
        )
      )
    )

  • 0
    Certified Associate Developer
    in reply to Shubham Aware

    Thanks   and   .. using this i was able to achieve 80% but if i gave alphabets its throws error and it breaks the screen. Instead of that how can we show validation message .

  • 0
    Certified Lead Developer
    in reply to Anitha Dharmalingam

    Oops - my null check in the saveInto should have done the null test against the "todecimal" version of the save!value just to make sure it contained anything valid after invalid characters are stripped out.  Here's mine again but with that one function added back in, and it works even when junk, text-only, or mixed (number and text) info is entered.

    a!localVariables(
      local!testDecimal: null(),
    
      a!textField(
        label: "Fake decimal entry",
        refreshAfter: "KEYPRESS",
        placeholder: "Enter Decimal Value",
    
        value: if(
          a!isNullOrEmpty(local!testDecimal),
          null(),
          fixed(local!testDecimal, 2)
        ),
        saveInto: {
          a!save(
            local!testDecimal,
            if(
              a!isNotNullOrEmpty(todecimal(save!value)),
              todecimal(trunc(todecimal(save!value), 2)),
              todecimal(null())
            )
          )
        }
      )
    )

Reply
  • 0
    Certified Lead Developer
    in reply to Anitha Dharmalingam

    Oops - my null check in the saveInto should have done the null test against the "todecimal" version of the save!value just to make sure it contained anything valid after invalid characters are stripped out.  Here's mine again but with that one function added back in, and it works even when junk, text-only, or mixed (number and text) info is entered.

    a!localVariables(
      local!testDecimal: null(),
    
      a!textField(
        label: "Fake decimal entry",
        refreshAfter: "KEYPRESS",
        placeholder: "Enter Decimal Value",
    
        value: if(
          a!isNullOrEmpty(local!testDecimal),
          null(),
          fixed(local!testDecimal, 2)
        ),
        saveInto: {
          a!save(
            local!testDecimal,
            if(
              a!isNotNullOrEmpty(todecimal(save!value)),
              todecimal(trunc(todecimal(save!value), 2)),
              todecimal(null())
            )
          )
        }
      )
    )

Children
No Data