0

我有一个表格,当状态选择列表更改时,状态生效日期需要是必填字段。

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;  
      }  
   });  
}

return false 无论如何都不会阻止我的表单提交。上面的表格被另一个函数调用,如下所示:

return checkStatuses();

4

1 回答 1

1

您现在的功能什么也不返回。您拥有的唯一返回语句是在 jQuery 循环中。Areturn 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 result;  //return the result of the checks
}
于 2011-05-10T20:34:09.447 回答