Jquery 无效日期/闰年的验证
尝试使用jquery来实现这一点,我发现了一个名为“真实日期验证”的插件。我似乎不能正确地实施它 有人能帮我吗?试图验证日期2-31-[每年什么]不应该起作用,以及闰年Jquery 无效日期/闰年的验证,jquery,Jquery,尝试使用jquery来实现这一点,我发现了一个名为“真实日期验证”的插件。我似乎不能正确地实施它 有人能帮我吗?试图验证日期2-31-[每年什么]不应该起作用,以及闰年 <?php $month = $_POST["mo"]; $day = $_POST["theDay"]; $yr = $_POST["year"]; if (!isset($_POST['submit'])) { // if page is not submitted; echo form ?> <scri
<?php
$month = $_POST["mo"];
$day = $_POST["theDay"];
$yr = $_POST["year"];
if (!isset($_POST['submit'])) { // if page is not submitted; echo form
?>
<script type="text/javascript" src="jquery.js"> </script>
<script type="text">
$(document).ready(function() {
var month = $('#mo').val();
var day = $('#tDay').val();
var year = $('#tYear').val();
var date = new Date(month+"/"+day+"/"+year);
if(day == "29" && month == "02") {
if(year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0)) {
return true
} else { return false; }
} else if(month == (date.getMonth()+1) && day == date.getDate() && year == date.getFullYear()) {
return true;
} else { return false; }
});
</script>
<h2 style="margin:0; padding:0;">Date Selection</h2>
<FORM method="POST" action="<?php echo $PHP_SELF;?>">
<select name="mo" id="mo">
<option disabled="disabled">SELECT MONTH</option>
<option>January</option>
<option>February</option>
<option>March</option>
<option>April</option>
<option>May</option>
<option>June</option>
<option>July</option>
<option>August</option>
<option>September</option>
<option>October</option>
<option>November</option>
<option>December</option>
</select>
<select name="theDay" id="tDay">
<option disabled="disabled">SELECT DAY</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
<select name="year" id="tYear">
<option disabled="disabled">SELECT YEAR</option>
<option>2011</option>
<option>2010</option>
<option>2009</option>
<option>2008</option>
<option>2007</option>
<option>2006</option>
<option>2005</option>
<option>2004</option>
<option>2003</option>
<option>2002</option>
<option>2001</option>
<option>2000</option>
<option>1999</option>
<option>1998</option>
<option>1997</option>
<option>1996</option>
<option>1995</option>
<option>1994</option>
<option>1993</option>
<option>1992</option>
<option>1991</option>
<option>1990</option>
<option>1989</option>
<option>1988</option>
<option>1987</option>
<option>1986</option>
<option>1985</option>
<option>1984</option>
<option>1983</option>
<option>1982</option>
<option>1981</option>
<option>1982</option>
</select>
<INPUT TYPE="submit" value="Send" name="submit" />
</FORM>
<?
} else {
echo "You chose: " . " ". $month . " ".$day . ", ". $yr;
}
?>
$(文档).ready(函数(){
var month=$('#mo').val();
var day=$('#tDay').val();
var year=$('#tYear').val();
var日期=新日期(月+“/”+日+“/”+年);
如果(日期=“29”和月份=“02”){
如果(年份%4==0&(年份%100!=0 | |年份%400==0)){
返回真值
}else{return false;}
}如果(月==(date.getMonth()+1)&&day==date.getDate()&&year==date.getFullYear()){
返回true;
}else{return false;}
});
日期选择
为什么不直接用PHP实现呢
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$day = $_POST["theDay"];
$month = $_POST["mo"];
$year = $_POST["year"];
if( checkdate( $month, $day, $year ) )
{
echo 'Congratulations, you managed to enter a date that exists';
}
}
?>
为什么不直接用PHP来做呢
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
$day = $_POST["theDay"];
$month = $_POST["mo"];
$year = $_POST["year"];
if( checkdate( $month, $day, $year ) )
{
echo 'Congratulations, you managed to enter a date that exists';
}
}
?>
无需亲自检查。JavaScriptDate
对象将为您执行此操作。创建对象后,只需将属性与原始值进行比较:
我把它放在一个单独的函数中,因为从就绪函数返回值没有意义:
function validateDate() {
var month = +$('#mo').val() - 1; // Convert to numbers with "+" prefix
var day = +$('#tDay').val();
var year = +$('#tYear').val();
var date = new Date(year, month, day); // Use the proper constructor
return date.getFullYear() == year && date.getMonth() == month && date.getDate() == day;
}
不需要自己检查。JavaScriptDate
对象将为您执行此操作。创建对象后,只需将属性与原始值进行比较:
我把它放在一个单独的函数中,因为从就绪函数返回值没有意义:
function validateDate() {
var month = +$('#mo').val() - 1; // Convert to numbers with "+" prefix
var day = +$('#tDay').val();
var year = +$('#tYear').val();
var date = new Date(year, month, day); // Use the proper constructor
return date.getFullYear() == year && date.getMonth() == month && date.getDate() == day;
}
以防这对其他人有帮助
使用ISO(yyyy-mm-dd)日期格式,jQuery接受月份少于31天(2020-06-31)的无效日期,并且不处理闰年。
下面是我的解决方案,它扩展了日期验证器
$.validator.methods.date = function (value, element) {
if (value) {
if (!jQuery.validator.methods.dateISO.call(this, value, element))
return false;
var jsDate = new Date(value);
if (jsDate == "Invalid Date")
return false;
if (jsDate.toISOString().substring(0, 10) != value)
return false;
}
return true;
}
以防这对其他人有帮助
使用ISO(yyyy-mm-dd)日期格式,jQuery接受月份少于31天(2020-06-31)的无效日期,并且不处理闰年。
下面是我的解决方案,它扩展了日期验证器
$.validator.methods.date = function (value, element) {
if (value) {
if (!jQuery.validator.methods.dateISO.call(this, value, element))
return false;
var jsDate = new Date(value);
if (jsDate == "Invalid Date")
return false;
if (jsDate.toISOString().substring(0, 10) != value)
return false;
}
return true;
}
$PHP\u SELF甚至可以在没有register\u globals的情况下工作吗?无论如何,将其替换为$\u SERVER['PHP\u SELF']
即使没有register\u globals,$PHP\u SELF也可以工作吗?无论如何,将其替换为$\u SERVER['PHP\u SELF']
Rotora-如何验证输入的月份是否为2/29/[whateveryear]-DNE认为无效的日期。@williamaEk-JavaScript将2011年2月29日解释为2011年3月1日。了解javascript如何处理不稳定的日期,可以通过将它们与日期对象从getFullYear()
、getMonth()
和getDate()
返回的内容进行比较来测试有效的输入。如果输入与方法结果相匹配,您就得到了有效的输入。作为其他人的旁注:Javascript中的月份从0开始,一直到11(这就是为什么上面的RoToRa减去1)RoToRa-如果输入的月份是2/29/[whateveryear],这是如何验证的?这是一个无效的日期,DNE。@williamaEk-Javascript将2011年2月29日解释为2011年3月1日。了解javascript如何处理不稳定的日期,可以通过将它们与日期对象从getFullYear()
、getMonth()
和getDate()
返回的内容进行比较来测试有效的输入。如果输入与方法结果相匹配,您就得到了有效的输入。作为其他人的旁注:Javascript中的月份从0开始,一直到11(这就是为什么上面的RoToRa减去1),这不会检查其1)是否为无效日期(如2010年2月29日)或闰年……它适用于上述两种情况。如果输入的日期无效,checkdate将返回false。有效日期(包括闰年的2月29日)将返回true,表示有效日期。感谢这条提示,否则我将浪费另外30分钟来构建这个精确的函数。这不会检查它是无效日期(如2010年2月29日)还是闰年……它适用于上述两种情况。如果输入的日期无效,checkdate将返回false。有效日期(包括闰年的2月29日)将返回true,表示有效日期。感谢这条提示,否则我将再浪费30分钟来构建这个确切的函数