10 Replies Latest reply on Feb 9, 2018 1:33 PM by Thom Parker

    Drop Down Show and Hide Dates

    Alexhi1221 Level 1

      I am creating a form for our payroll department where a user will select the start date of a payroll period. The list of dates in the drop down box is large so I used http://www.acroscript.net/pdf/demos/comboPopulateTest.pdf to create the box. What I need to do is hide any dates that are old so the user selects a future date. All of the searches I have come across relate to dependent drop down boxes and cannot find any scripts to "filter" dates. Any help will greatly be appreciated. Solely using Acrobat XI.

       

       

      Thank you

        • 1. Re: Drop Down Show and Hide Dates
          try67 MVP & Adobe Community Professional

          What happens if the user selects a date and then opens the file later on? If you refresh the list of options each time it is opened you will delete any value that was selected in the past.

          • 2. Re: Drop Down Show and Hide Dates
            Thom Parker Adobe Community Professional

            That's George Johnson's PDF for filling a combobox with items from a pasted list.

             

            Why don't you create a script for filling the dropdown with a list of relevant dates?

             

            Here is a script that starts with today and goes for 30 days. Make sure you change the dropdown field name "DateList" to match the one on your form.

             

            var aDateList = [];
            var nToday = (new Date).getDate();    
            var dtItem;
            for(var i=0;i<30;i++)
            {
              dtItem = new Date;
              dtItem.setDate(nToday + i);
              aDateList.push(util.printd("mm/dd/yyyy", dtItem));
            }
            this.getField("DateList").setItems(aDateList);
            
            1 person found this helpful
            • 3. Re: Drop Down Show and Hide Dates
              Alexhi1221 Level 1

              Thank you. The form will be saved as read only so hopefully that will not be a problem

              • 4. Re: Drop Down Show and Hide Dates
                try67 MVP & Adobe Community Professional

                Unless you flatten your file, or add a condition not to update the field's options list when it is set as read-only, it will be.

                1 person found this helpful
                • 5. Re: Drop Down Show and Hide Dates
                  Alexhi1221 Level 1

                  The dates will be 14 days apart. I used George Johnson's PDF because I was using dates calculated in Excel i.e. 14 days apart--using payroll dates e.g. 2/16/18. Thank you

                  • 6. Re: Drop Down Show and Hide Dates
                    Thom Parker Adobe Community Professional

                    easy enough to do. Just use this variation, it generates 10 dates 14 days apart, starting with today. If you put this script at the document level it will recreate the date list every time the document is opened, so it will always be current.

                     

                     

                    var aDateList = [];  
                    var nToday = (new Date).getDate();      
                    var dtItem;  
                    for(var i=0;i<10;i++)  
                    {  
                      dtItem = new Date;  
                      dtItem.setDate(nToday + i*14);  
                      aDateList.push(util.printd("mm/dd/yyyy", dtItem));  
                    }  
                    this.getField("DateList").setItems(aDateList);  
                    
                    1 person found this helpful
                    • 7. Re: Drop Down Show and Hide Dates
                      Alexhi1221 Level 1

                      Thank you for the reply. This is a fine script to add days from today, however, the pay periods are set with the next future one starting on 2/16/2018 then 3/2/2018 etc. On 2/17/2018 I need the first visible date to be 3/2/2018.

                      • 8. Re: Drop Down Show and Hide Dates
                        Thom Parker Adobe Community Professional

                        Well, the point of the script is to show how consecutive dates are created. All you have to do is modify the start point and the increment to whatever is needed.

                        Say for example the start date is in a form field. Then the script would parse the date out of the field.

                        Say for example the start date format was mm/dd/yyyy.

                        Here's a modified script to use a random start date.

                         

                        var aDateList = [];   
                        var dtItem = util.scand("mm/dd/yyyy",this.getField("StartDate"));
                        if(dtItem)
                        {
                             for(var i=0;i<10;i++)   
                             {   
                                  dtItem.setDate(dtItem.getDate() + 14);   
                                  aDateList.push(util.printd("mm/dd/yyyy", dtItem));   
                             }
                        }   
                        this.getField("DateList").setItems(aDateList);   
                        
                        
                        
                        • 9. Re: Drop Down Show and Hide Dates
                          Alexhi1221 Level 1

                          Thank you very much for the script. I'm obviously not familiar with java script. The above is setting the first date 14 days from today. The getDate() seems to be getting in the way. I am using:

                           

                          var aDateList = [];    

                          var dtItem = util.scand("mm/dd/yyyy",this.getField("2/2/2018")); 

                          if(dtItem) 

                               for(var i=0;i<10;i++)    

                               {    

                                    dtItem.setDate(dtItem.getDate() + 14);

                                    aDateList.push(util.printd("mm/dd/yyyy", dtItem));    

                               } 

                          }    

                          this.getField("DateList").setItems(aDateList);

                          • 10. Re: Drop Down Show and Hide Dates
                            Thom Parker Adobe Community Professional

                            You are correct. I write this stuff pretty fast. So Here's quick change to make sure it starts with the date in the input field.

                            BTW: the getField is for gettting an actual field on the form, its not a way to specify a date. "StartDate" is a field name, not a placeholder for adding a date.

                             

                            var aDateList = [util.printd("mm/dd/yyyy", dtItem)];     
                            if(dtItem)  
                            {  var dtItem = util.scand("mm/dd/yyyy",this.getField("StartDate"));  
                            
                            
                            
                                 for(var i=0;i<10;i++)     
                                 {     
                                      dtItem.setDate(dtItem.getDate() + 14);     
                                      aDateList.push(util.printd("mm/dd/yyyy", dtItem));     
                                 }  
                            }     
                            this.getField("DateList").setItems(aDateList);     
                            
                            
                            
                            1 person found this helpful