Skip to main content
rakeshk21205956
Inspiring
September 16, 2020
Answered

Adobe acrobat Form cannot capture "0" while using split() command

  • September 16, 2020
  • 3 replies
  • 2749 views

Hi,

I am trying to split a number (with 2 decimalsplace ) and separate them in before decimal and after decimal.

Example:  

.  Text1 :  I have number say  25.68  ,  now i want it to split into two fields so,

Text2 :  it should show 25 

Text3 : it should show 68   ,

everything is working fine.. until when the number after decimal is 00   then it doesnot show correct value;

 

below is my script

for Text2 calculation script :

var mins = this.getField("Text1").valueAsString;

event.value = mins.split(".")[0]

 

for Text3

var mins = this.getField("Text1").valueAsString;

event.value = mins.split(".")[1]

 

is there any other method to split the number where when the number has 00 in its decimal capture the 0 in Text3 .

This topic has been closed for replies.
Correct answer rakeshk21205956

I would recommend against using this kind of construction:

var split = mins.toString().split(".")[1];

You're making an assumption there that there is a period in the string. If there isn't, your script will error out.

It's better to do it like this:

 

var minsParts = mins.toString().split(".");
if (minsParts.length==2) {
// there's one period in the string, handle as usual
} else {
// there's more than one period in the string, or none at all, handle as needed
}


ok.. thanks NesaNurani and try67   ...

script is working now... as required .. below is the script i used:

 

var mins = Number(this.getField("Text1").value);

var minsParts = mins.toString().split(".");

if (minsParts.length==2) {
minsParts[1];}
else {event.value =event.value = "00"  ;}

3 replies

Nesa Nurani
Community Expert
Community Expert
September 16, 2020

Just make sure field calculation order is like this:

and it should work fine.

 

Nesa Nurani
Community Expert
Community Expert
September 17, 2020

Sorry about my first post I thought you are just having troubles to make it work.

Anyway, you can try this workaround:

If result is whole number field "text3" will show 00 else it will split decimals normaly.

var mins = Number(this.getField("Text1").value);
var split = mins.toString().split(".")[1];
var int = Number.isInteger(mins);
if(int == true){
event.value = "00";}
else if(int == false){
event.value = split;}

It works for calculations so you don't need to enter value manually.

Hope that can help you 🙂

try67
Community Expert
Community Expert
September 17, 2020

I would recommend against using this kind of construction:

var split = mins.toString().split(".")[1];

You're making an assumption there that there is a period in the string. If there isn't, your script will error out.

It's better to do it like this:

 

var minsParts = mins.toString().split(".");
if (minsParts.length==2) {
// there's one period in the string, handle as usual
} else {
// there's more than one period in the string, or none at all, handle as needed
}

try67
Community Expert
Community Expert
September 16, 2020

That's because the ".00" is added by the Number Format script. It's not an actual part of the field's value.

You should first check if the value contains a ".". If so, split by it and proceed like before. If not, treat the whole value as you do the mins in Text2.

rakeshk21205956
Inspiring
September 16, 2020

there is no formatting done in Text1 .   06.00 is entered manually   Format tab is set to none

Bernd Alheit
Community Expert
Community Expert
September 16, 2020

Does you enter the value or does you use a calculation?

Bernd Alheit
Community Expert
Community Expert
September 16, 2020

What format does you use for field "Text3" ?

rakeshk21205956
Inspiring
September 16, 2020

no formatting for Text3

Bernd Alheit
Community Expert
Community Expert
September 16, 2020