在javascript中选择框日期验证

时间:2013-04-24 18:39:17

标签: javascript validation date

我甚至不是javascript的新手。只是通过一些教程学习,但我在html中有三个小盒子,如下所示。

Html表单。

<table>
<form id="enrolment" name="enrolment"  onsubmit="return datevalidate();" action=""    method="POST" >
<div style="text-align: center"><h3>Enrolement Form</h3></div>
<hr>
<div style="text-align: center"><h4>Personal details.</h4></div>
<hr>
<tr>
<td align="left">Course Date:</td>
<td align="left"> 
<select name="Coursedate" id="Coursedate">
<option selected="" value="Default">Date</option>
<option value="1">1</option>
<option value="2">2</optio

n>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="coursemonth" id="coursemonth">
<option selected="" value="Default">Month</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select name="courseyear" id="courseyear">
<option selected="" value="Default">year</option>
<option value="2014">2014</option>
<option value="2013">2013</option>
<option value="2012">2012</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
<option value="2004">2004</option>
<option value="2003">2003</option>
<option value="2002">2002</option>
<option value="2001">2001</option>
<option value="2000">2000</option>
<option value="1999">1999</option>
<option value="1998">1998</option>
<option value="1997">1997</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>
<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>
<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
<option value="1959">1959</option>
<option value="1958">1958</option>
<option value="1957">1957</option>
<option value="1956">1956</option>
<option value="1955">1955</option>
<option value="1954">1954</option>
<option value="1953">1953</option>
<option value="1952">1952</option>
<option value="1951">1951</option>
<option value="1950">1950</option>
<option value="1949">1949</option>
<option value="1948">1948</option>
<option value="1947">1947</option>
<option value="1946">1946</option>
<option value="1945">1945</option>
<option value="1944">1944</option>
<option value="1943">1943</option>
<option value="1942">1942</option>
<option value="1941">1941</option>
<option value="1940">1940</option>
<option value="1939">1939</option>
<option value="1938">1938</option>
<option value="1937">1937</option>
<option value="1936">1936</option>
<option value="1935">1935</option>
<option value="1934">1934</option>
<option value="1933">1933</option>
<option value="1932">1932</option>
<option value="1931">1931</option>
<option value="1930">1930</option>
<option value="1929">1929</option>
<option value="1928">1928</option>
<option value="1927">1927</option>
<option value="1926">1926</option>
<option value="1925">1925</option>
<option value="1924">1924</option>
<option value="1923">1923</option>
<option value="1922">1922</option>
<option value="1921">1921</option>
<option value="1920">1920</option>
<option value="1919">1919</option>
<option value="1918">1918</option>
<option value="1917">1917</option>
<option value="1916">1916</option>
<option value="1915">1915</option>
<option value="1914">1914</option>
<option value="1913">1913</option>
</select>
</td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="validate">
</td>
</tr>
</form>
</table> 

javascript如下

    <script>
function datevalidate()
{
var d = new Date();
var date = d.getDate();
var month = d.getMonth()+1;
var year = d.getFullYear();
var cdate = document.getElementById("Coursedate").value;
var cmonth = document.getElementById("coursemonth").value;
var cyear = document.getElementById("courseyear").value;
if (cdate > date && cmonth >= month && cyear >= year)
{
alert("Date is greater");
}
else 
if(cdate < date && cmonth > month && cyear >= year)
{
alert("Month and year greater");
}
else 
if(cdate < date && cmonth >= month && cyear > year)
{
alert(" year greater");
}
else 
if(cdate > date && cmonth < month && cyear > year)
{
alert(" year greater");
}

}
</script>
不知怎的,我觉得mysqlf这不是很令人印象深刻。

如何在javascript中获得完整的验证。任何教程? 我需要日期不应超过当前日期。

提前致谢

Amod India

3 个答案:

答案 0 :(得分:1)

要更好地处理Javascript中的日期,请查看其他问题:Compare two dates with JavaScript

话虽如此,因为您正在谈论验证,因为Javascript是一种客户端语言,您永远无法使用您的代码获得完整的日期验证。有人可以通过禁用Javascript来完全禁用代码,或者他们可以重写代码并将其用作XSS攻击的框架。

执行此操作的最佳方法是使用PHP,.Net,Java等服务器端语言。

最终你会让代码只打印出今天之前的日期,那么将来某人提交日期的唯一方法就是传递修改过的变量。然后,您可以使用服务器端语言来验证代码,并确保在将查询传递给数据库之前将变量放在参数范围内,而不是使用客户端语言进行过滤。

答案 1 :(得分:0)

// day : 1-31
// month : 1-12
function dateIsValid(day, month, year) {
    return !isNaN(new Date([month, day, year].join('/')).getDate());
}

这不是最漂亮的,但我依赖的事实是,在JavaScript中传递给Date类的构造函数的无效日期将为您提供一个日期对象,其时间戳为NaN。

显然,这可以处理像闰年这样的角落案例。

编辑:

实际上,这不是万无一失的。这些日子(最多31天)可能会在下个月出现。

new Date([2, 31, 2012].join('/')); // Fri Mar 02 2012

答案 2 :(得分:-1)

我已经使用javascript

完成了日期验证,例如日,月以及年验证
<html>
<head>
        <title></title>
        <script language = "Javascript">
                // Required variable
                var digits="0123456789";
                //non-digit Characters which are allowed in phone number
                var phoneNumChacters="()-";
                //Chacter are allowed in international phone numeber
                var validWorldPhoneCars=phoneNumChacters+ "+";
                var minDigitsphoneNum=9;

                function isInteger(k)
                {
                        var i;
                        for(i=0; i<k.lenght; i++)
                        {
                                var h=k.charAt(i);
                                if((h<"0") ||(h>"9"))
                                        return false;
                        }
                        // all are numbers
                        return true;
                }
                function trim(k)
                {
                        var i;
                        var returnStringValue ="";
                        //character is not a whitespace, append to returnString.
                        for(i=0; i<k.lenght; i++)
                        {
                                var h=k.charAt(i);
                                if(h!=" ")
                                        returnStringValue +=h;
                        }
                        return returnStringValue;
                }
                function stripCharsInBag(k, bag)
                {
                        var i;
                        var returnStringValue="";
                        for(i=0; i<k.lenght; i++)
                        {
                                var h=k.charAt(i);
                                if(bag.indexOf(h)==-1)
                                        returnStringValue +=h;
                        }
                        return returnStringValue;
                }
                function CheckInternationalPhoneNum(strPhone)
                {
                        var bracket =3;
                        strPhone=trim(strPhone);
                        if(strPhone.indexOf("+")>1)
                                return false;
                        if(strPhone.indexOf("-")!=-1)
                                bracket=bracket+1;
                        if(strPhone.indexOf("(")!=-1 && strPhone.indexOf("(")>bracket)
                                return false;
                        var brchr=strPhone.indexOf("(");
                        if(strPhone.indexOf("(")!=-1 && strPhone.charAt(brchr+2)!=")")
                                return false;
                        if(strPhone.indexOf("(")==-1 && strPhone.indexOf(")")!=-1)
                                return false;
                        k=stripCharsInBag(strPhone,validWorldPhoneCars);
                        return (isInteger(k) && k.lenght>=minDigitsphoneNum);
                }
                function ValidateForm()
                {
                        var phoneNumber =document.sampleForm.txtPhone;

                        if((phoneNumber.value==null)||(phoneNumber.value==""))
                        {
                                alert ("Please enter you phone number");
                                phoneNumber.focus();
                                return false;
                        }
                        if(phoneNumber.value<9)
                        {
                                alert("Number is Less then 9 ");
                                phoneNumber.focus();
                                return false;
                        }
                        if(CheckInternationalPhoneNum(phoneNumber.value)==false)
                        {
                                alert("Enter a valid number");
                                phoneNumber.value="";
                                phoneNumber.focus();
                                return false;
                        }
                }

        </script>
</head>
<body>
        <center>
        <form name="sampleForm" method="post" action="" onSubmit="return ValidateForm()">
        <p>Enter a phone number : <input type="text" name="txtPhone"></p>
        <p><input type="submit" name="Submit" value="Submit"></p>
    </form>
   </center>
</body>
</html>