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
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
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 ) ) ) )
Thanks Shubham Aware and Mike Schmitt .. 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 .
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()) ) ) } ) )
a!localVariables( local!data, a!floatingPointField( label: "Dental Premium (Annual)", labelPosition: "ABOVE", value: local!data, saveInto: { a!save( local!data, if( a!isNotNullOrEmpty(todecimal(save!value)), (save!value), todecimal(null()) ) ), }, refreshAfter: "UNFOCUS", validations: { if( not( regexMatch("^[0-9]*\.[0-9]{2}$", local!data) ), "Please enter a valid number with up to 2 decimal places.", {} ) } ) )
Hi Mike Schmitt Shubham Aware . Thank you for the help, it works well. But here now user dont want to truc the values instead of that expecting to show the validation so that they will give what they want either they want rounded value or raw data.For that i tried using below regexMatch function for the validation, but the issue is it is throwing validations if we give round values (123)or 1 decimal values (12.10). Can you please help how to show validation only when they enter more then 2 decimal