Copy link to clipboard
Copied
Hi Friends.
Now i found using the following code is more easy than Regular Reset Form for Particular Fields (16 Groups) of Checkboxes., this code working very well form any Button or Document javascript as function, but it really looks crazy!
function ClearComboBoxes()
{
//Remove CheckBoxes A
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "A"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes B
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "B"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes C
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "C"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes D
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "D"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes E
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "E"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes F
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "F"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes G
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "G"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes H
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "H"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes I
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "I"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes J
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "J"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes K
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "K"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes L
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "L"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes M
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "M"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes N
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "N"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes O
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "O"+i;
this.resetForm(CurrentFieldArray);
//Remove CheckBoxes P
var CurrentFieldArray= new Array();
for (var i=1;i<=20;i++)
CurrentFieldArray = "P"+i;
this.resetForm(CurrentFieldArray);
}
Here is my Approach to make it More Simple by nesting the loops inside the Array (16 Groups, Every Group have 20 Check boxes) but with no success, the JavaScript Debugger always Shown Error (Undefined) but when putting this inside button in run-time no error shown, any help is appreciated, thanks in advance.
var CurrentFieldArray = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"];
for (var cf=0; cf<CurrentFieldArray.length; cf++) {
for (var xx=1;xx<=20;xx++) {
CurrentFieldArray[cf].valueAsString = CurrentFieldArray[cf].valueAsString+xx.value;
this.resetForm(CurrentFieldArray);
{
break;
}
}
}
Mohammad Hasanin
1 Correct answer
i found the solution ! and remove many unwanted lines!
var Arr= ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"];
for (var cfm=0; cfm<Arr.length; cfm++) {
for (var x=1;x<=20;x++){
this.getField(Arr[cfm]+x).value = "" ;
}
}
also line Number 4 can be altered by and it will do the job!
this.resetForm(Arr[cfm]+x);
But i found that using
this.getField(Arr[cfm]+x).value = "" ;
execute much faster than the (resetForm)
Copy link to clipboard
Copied
You're on the right path... One thing that's important to know is that "undefined" is not an error. Quite the opposite.
It just means that the script completed running without throwing any errors or returning any values.
I won't give you the correct code to do it, but will guide you in solving the issues you have.
First of all, you need to think very carefully about each command in your code. Why did you add it? What does it do? Is it necessary?
Also, you need to think about the types of variables you have. How do you access their values? What properties and methods do they have? etc.
And, of course, try to debug your code. Add console.println commands so you could see the values of your variables while the code is running and follow what is going on with it.
Copy link to clipboard
Copied
ok i will try hard and let you know
Mohammad Hasanin
Copy link to clipboard
Copied
i found the solution ! and remove many unwanted lines!
var Arr= ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"];
for (var cfm=0; cfm<Arr.length; cfm++) {
for (var x=1;x<=20;x++){
this.getField(Arr[cfm]+x).value = "" ;
}
}
also line Number 4 can be altered by and it will do the job!
this.resetForm(Arr[cfm]+x);
But i found that using
this.getField(Arr[cfm]+x).value = "" ;
execute much faster than the (resetForm)
Mohammad Hasanin
Copy link to clipboard
Copied
Well done!
If you want to use the resetForm command you should collect all the field names into a single array and then call it once, instead of calling it for each field, which is indeed slower.
One important thing to understand about this command, though, is that it doesn't clear the values of the fields. It reverts them to their default value, which is not (necessarily) the same as a blank value.
Copy link to clipboard
Copied
Thank you for your Valuable Recommendations and Explanation of the Nature of JavaScript
Mohammad Hasanin
Copy link to clipboard
Copied
When cycling through all the elements of an array, you can use the "in" keyword. It prevents from having to create a variable for your loop
for (i in CurrentFieldArray) {
for (var xx=1;xx<=20;xx++) {
CurrentFieldArray.valueAsString = CurrentFieldArray.valueAsString+xx.value;
this.resetForm(CurrentFieldArray);
{
break;
}
}
}
Copy link to clipboard
Copied
I Try it but not working!
Mohammad Hasanin
Copy link to clipboard
Copied
What is not working?
Of course, tthe script I copied from your post will not work, but the loop part will.
So for the solution you say did work, replace this:
for (var cfm=0; cfm<Arr.length; cfm++)
with this:
for (cfm in Arr)
Also, I figure your fields are named A1, A2, A3 ......all de way to P20. Next time, try to name them in a parent/child way ---> A.1 , A.2, A.3, etc. That way, instead of having to loop throught all letters and all numbers, you can apply an action on the parent field and all child will be affected.
A simple this.resetForm(["A"]) would have taken car of all 20 child fields of "A"
- var Arr= ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"];
- this.resetForm(Arr)
these 2 simple lines would have taken care of all 16 * 20 fields because when you enter only one command in a loop, you do not need to but it inside brackets {}. Since resetForm() takes an array of fields names as an argument, you can pass Arr to it directly.
Copy link to clipboard
Copied
Thank you, i think shortening the code affect its execution speed, i learned that before while developing in multimedia applications
Mohammad Hasanin