Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在客户端的下拉列表中验证所选月份和年份中的所选日期_C#_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 在客户端的下拉列表中验证所选月份和年份中的所选日期

C# 在客户端的下拉列表中验证所选月份和年份中的所选日期,c#,javascript,jquery,asp.net-mvc,asp.net-mvc-4,C#,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,我正在使用我的MVC4应用程序。这里我有天、月、年下拉列表来选择出生日期。现在,我想验证所选月份和年份中的所选日期(特别是2月29日、28日和所有月份)。是否有任何定义的jquery或javascript函数 请帮助。 <script type="text/javascript"> function checkdate(input){ var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity

我正在使用我的MVC4应用程序。这里我有天、月、年下拉列表来选择出生日期。现在,我想验证所选月份和年份中的所选日期(特别是2月29日、28日和所有月份)。是否有任何定义的jquery或javascript函数

请帮助。


<script type="text/javascript">

function checkdate(input){

var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
var returnval=false
if (!validformat.test(input.value))
alert("Invalid Date Format. Please correct and submit again.")
else{ 

var monthfield=input.value.split("/")[0]
var dayfield=input.value.split("/")[1]
var yearfield=input.value.split("/")[2]
var dayobj = new Date(yearfield, monthfield-1, dayfield)
if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
else
returnval=true
}
if (returnval==false) input.select()
return returnval
}

</script>
功能检查日期(输入){ var validformat=/^\d{2}\/\d{2}\/\d{4}$///格式有效性的基本检查 var returnval=false 如果(!validformat.test(输入值)) 警报(“无效的日期格式。请更正并重新提交。”) 否则{ var monthfield=input.value.split(“/”[0] var dayfield=input.value.split(“/”[1] var yearfield=input.value.split(“/”[2] var dayobj=新日期(年字段,月字段-1,日字段) if((dayobj.getMonth()+1!=monthfield)| |(dayobj.getDate()!=dayfield)| |(dayobj.getFullYear()!=yearfield)) 警报(“检测到无效的日、月或年范围。请更正并重新提交。”) 其他的 returnval=true } 如果(returnval==false)输入。选择() 返回值 }
u单击submit按钮调用此函数,您必须以mm/dd/yyyy格式将日期传递给此函数。它将验证所有日期。如果您面临问题,请回复我。

函数isDate(txtDate){
function isDate(txtDate) {
    var currVal = txtDate;
    if (currVal == '')
       return false;

  //Declare Regex  
  var rxDatePattern = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
  var dtArray = currVal.match(rxDatePattern); // is format OK?

  if (dtArray == null)
      return false;

   //Checks for dd/mm/yyyy format.
   var dtDay = dtArray[1];
   var dtMonth = dtArray[3];
   var dtYear = dtArray[5];

  if (dtMonth < 1 || dtMonth > 12)
      return false;
  else if (dtDay < 1 || dtDay > 31)
      return false;
  else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31)
      return false;
  else if (dtMonth == 2) {
      var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
      if (dtDay > 29 || (dtDay == 29 && !isleap))
          return false;
  }

  return true;
}
var currVal=txtDate; 如果(currVal='') 返回false; //声明正则表达式 var rxDatePattern=/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/; var dtArray=currVal.match(rxDatePattern);//格式正确吗? if(dtArray==null) 返回false; //检查dd/mm/yyyy格式。 var dtDay=dtArray[1]; var dtMonth=dtArray[3]; var dtYear=dtArray[5]; 如果(dtMonth<1 | | dtMonth>12) 返回false; 否则如果(dtDay<1 | | dtDay>31) 返回false; 否则如果((dtMonth==4 | | dtMonth==6 | | dtMonth==9 | | dtMonth==11)和&dtDay==31) 返回false; 否则如果(dtMonth==2){ var isleap=(dtYear%4==0&&(dtYear%100!=0 | | dtYear%400==0)); 如果(dtDay>29 | |(dtDay==29&&!isleap)) 返回false; } 返回true; }

这将以“dd/MM/yyyy”的格式工作。

您是否尝试了jquery验证插件。我需要一种方法来验证这些下拉列表或基于月/年选择的重新绑定。您是否尝试根据下拉列表值构造日期,以便验证日期。我也读过这篇文章:我已经将'02/28/2013'作为函数参数传递,但显示了验证消息'Invalid Date Format'。请更正并再次提交“我的目标是在一个月内验证任何无效日期(例如:如果我给出“2013年2月2日,则需要显示“已选择的无效日期”),您正在使用哪个jquery…因为我测试了mematch的工作性能,这是javascript验证正则表达式的基本方法。谢谢Anna,我已经修复了错误,解决方案对我来说很好。非常感谢你。