2010-07-13 3 views
1

J'ai deux champs de saisie et holidayDate Description (id = balises)validation Javascript

<html> 
    <head> 
     <script type="text/javascript"> 
      $(document).ready(function() { 
       $('#holidayDate').datepicker(); 
       var availableTags = ["New years Day", "Martin Luther King Day","Groundhog  Day", "Valentine's Day", "Washington's Birthday", 
       "Easter", "Earth Day", "National Arbor Day", "Mother's Day", "Memorial Day", "Flag Day", "Father's Day", "Independence Day", 
       "Labor Day", "Columbus Day", "Halloween", "Veterans Day", "Thanksgiving Day", "Pearl Harbor Remembrance Day", "Christmas Day"]; 
       $("#tags").autocomplete({source:availableTags}); 
       $('#holidayDate').change(function() { 
        var dateString = $(this).val().substring(0, 5); 
        var res = ""; 
        switch (dateString) { 
         case '01/01': res = availableTags[0]; break; //If date entered, then return holiday 
         case '02/02': res = availableTags[2]; break; 
         case '02/14': res = availableTags[3]; break; 
         case '04/22': res = availableTags[6]; break; 
         case '06/14': res = availableTags[10]; break; 
         case '07/04': res = availableTags[12]; break; 
         case '10/31': res = availableTags[15]; break; 
         case '11/11': res = availableTags[16]; break; 
         case '12/07': res = availableTags[18]; break; 
         case '12/25': res = availableTags[19]; break; 
        }   
        $('#tags').val(res); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <input id="holidayDate">Date:</input> 
     <input id="tags">Description:</input> 
    </body> 
</html> 

Si je veux faire la même validation vice versa alors que dois-je faire?

Répondre

0

Je vous suggère de mettre les dates correspondantes dans un autre tableau, comme ceci:

var tagDates = [ '01/01', null, '02/02', '02/14', ... ]; 
/* fill in the rest, with null where you don't have a date */ 

vous pourriez juste itérer soit ensemble en fonction de ce que vous voulez. Votre switch actuelle deviendrait ceci:

/* convert date to tag */ 
for (var i = 0; i < tagDates.length; i++) 
    if (tagDates[i] == dateString) { 
    res = availableTags[i]; 
    break; 
    } 

Et vous pouvez le faire dans l'autre sens comme celui-ci:

/* convert tag to date */ 
for (var i = 0; i < availableTags.length; i++) 
    if (availableTags[i] == tagString) { 
    res = tagDates[i]; 
    break; 
    }