What 'm trying to do is to caculate a book pages number for a copying them.
For example I want to copy pages from 25 to 30 , so the user will write 25-30
the number of copies will equal sum = "30 - 25 + 1"
and if the user write only a single number, the number of copies will equal "sum = sum + 1"
So, the user input will be like that "25-30,45-60,65,67"
I'm thinking of using an Array and a "," to split
var sumArray = new Array();
sumArray = sum.split(",");
Are there any possible way to do this ??
Thanx
Solved! Go to Solution.
Views
Replies
Total Likes
Hi, I think you could use a RegEx but I would use a split as well, something like;
var pageNumbers = TextField1.rawValue.split(",");
var sum = 0;
var isValid = true;
for (var i = 0; i < pageNumbers.length; i++)
{
var pages = pageNumbers[i].split("-");
// Check for all number elements
if (!pages.every(function(element) { return (element == parseInt(element, 10)); } ) )
{
xfa.host.messageBox("Please enter comma separated list of pages number, with a range separated by a hyphen, e.g. 25-30,45-60,65,67");
isValid = false;
break;
}
if (pages.length > 2)
{
xfa.host.messageBox("Please enter a page range separated by a hyphen, e.g. \"45-60\"");
isValid = false;
break;
}
if (pages.length == 1)
{
sum++;
}
else
{
var start = parseInt(pages[0]);
var end = parseInt(pages[1]);
if (end < start)
{
xfa.host.messageBox("Please enter a valid page range separated by a hyphen, with the start page first, e.g. \"45-60\"");
isValid = false;
break;
}
sum += (end - start + 1);
}
}
if (isValid)
{
app.alert(sum);
}
Might need some more error handling but hopefully will get you started.
Regards
Bruce
Views
Replies
Total Likes
Hi, I think you could use a RegEx but I would use a split as well, something like;
var pageNumbers = TextField1.rawValue.split(",");
var sum = 0;
var isValid = true;
for (var i = 0; i < pageNumbers.length; i++)
{
var pages = pageNumbers[i].split("-");
// Check for all number elements
if (!pages.every(function(element) { return (element == parseInt(element, 10)); } ) )
{
xfa.host.messageBox("Please enter comma separated list of pages number, with a range separated by a hyphen, e.g. 25-30,45-60,65,67");
isValid = false;
break;
}
if (pages.length > 2)
{
xfa.host.messageBox("Please enter a page range separated by a hyphen, e.g. \"45-60\"");
isValid = false;
break;
}
if (pages.length == 1)
{
sum++;
}
else
{
var start = parseInt(pages[0]);
var end = parseInt(pages[1]);
if (end < start)
{
xfa.host.messageBox("Please enter a valid page range separated by a hyphen, with the start page first, e.g. \"45-60\"");
isValid = false;
break;
}
sum += (end - start + 1);
}
}
if (isValid)
{
app.alert(sum);
}
Might need some more error handling but hopefully will get you started.
Regards
Bruce
Views
Replies
Total Likes
Thanx alot Bruce it works
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies
Views
Likes
Replies