jquery: при изменении значения списка выбора поле даты является обязательным

#jquery #select #required

#jquery #выберите #требуется

Вопрос:

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

 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:

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

 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 resu<  //return the result of the checks
}
  

Комментарии:

1. @ dlackey Хаха, это происходит! Удачи