jquery: при изменении значения списка выбора поле даты обязательно - PullRequest
0 голосов
/ 11 мая 2011

У меня есть форма, и когда список выбора статуса изменяется, поле вступления в силу должно быть обязательным для заполнения.

function checkStatuses(){    
   $('.status').each(function (){  
      thisStatus = $(this).val().toLowerCase();  
      thisOrig_status = $(this).next('.orig_status').val().toLowerCase();  
      target = $(this).parents('td').nextAll('td:first').find('.datepicker');  

      if ( thisStatus  == thisOrig_status  )  
      {  
         target.val('');  
      }  
      else if( thisStatus == 'production' || thisStatus == 'production w/o appl')
      {
         target.val('<cfoutput>#dateformat(now(), "mm/dd/yyyy")#</cfoutput>').focus();
         alert('The Status Effective Date is required.');
         return false;  
      }  
      else  
      {  
         target.val('<cfoutput>#dateformat(now(), "mm/dd/yyyy")#</cfoutput>');  
         return false;  
      }  
   });  
}

Возвращенное значение false не препятствует отправке моей формы.Вышеуказанная форма вызывается другой функцией, такой как:

return checkStatuses();

1 Ответ

1 голос
/ 11 мая 2011

Ваша функция сейчас ничего не возвращает. Единственные операторы возврата, которые у вас есть, находятся в цикле jQuery. return false - это, по сути, разрыв цикла $.each(). Который затем возвращается к вашей главной функции (checkStatuses()), которая достигает конца кодового блока без какого-либо оператора возврата. Наличие возвращаемой переменной может помочь:

function checkStatuses(){
   var result = true;  //assume correct unless we find faults

   $('.status').each(function (){  
      thisStatus = $(this).val().toLowerCase();  
      thisOrig_status = $(this).next('.orig_status').val().toLowerCase();  
      target = $(this).parents('td').nextAll('td:first').find('.datepicker');  

      if ( thisStatus  == thisOrig_status  )  
      {  
         target.val('');  
      }  
      else if( thisStatus == 'production' || thisStatus == 'production w/o appl')
      {
         target.val('<cfoutput>#dateformat(now(), "mm/dd/yyyy")#</cfoutput>').focus();
         alert('The Status Effective Date is required.');
         result = false;  //set to false meaning do not submit form
         return false;  
      }  
      else  
      {  
         target.val('<cfoutput>#dateformat(now(), "mm/dd/yyyy")#</cfoutput>');
         result = false;  //set to false meaning do not submit form
         return false;  
      }  
   });  
   return result;  //return the result of the checks
}
...