我有三个日期月份和年份下拉列表现在我想使用javascript或inbuild asp.net验证控件在asp.net中验证此选定日期。
感谢......
答案 0 :(得分:0)
这是验证日期格式的java脚本代码:
<script language="javascript" type="text/javascript">
function ValidateDate(args)
{
var date=args.Value;
var arr=date.split('/');
if(arr.length!=3)
{
args.IsValid=false;
return;
}
var day;
if(arr[1]=='08')
{
day=parseInt('8');
}
else if(arr[1]=='09')
{
day=parseInt('9');
}
else
{
day=parseInt(arr[1]);
}
var month;
if(arr[0]=='08')
{
month=parseInt('8');
}
else if(arr[0]=='09')
{
month=parseInt('9');
}
else
{
month=parseInt(arr[0]);
}
var year=parseInt(arr[2]);
var boolday=false;
var boolmonth=false;
var boolyear=false;
if(!isNaN(year))
{
if(1800<year&&year<2100)
{
boolyear=true;
}
}
if(!isNaN(month))
{
if(0<month&&month<13)
{
boolmonth=true;
}
}
if(!isNaN(day))
{
var val=32;
if(boolmonth)
{
if(month==2)
{
if(boolyear)
{
if(year%4==0)
{
val=30;
}
else
{
val=29;
}
}
}
else if(month==4||month==6||month==11||month==9)
{
val=31
}
}
if(0<day&&day<val)
{
boolday=true;
}
}
if(boolyear&&boolmonth&&boolday)
{
args.IsValid=true;
}
else
{
args.IsValid=false;
}
}
</script>
您可以通过合并3个值并将其传递给函数来验证在3-DropDownList中输入的日期
答案 1 :(得分:0)
使用自定义验证器:
protected void dobCustomValidator_ServerValidate(object sender, ServerValidateEventArgs e)
{
CustomValidator validator = (CustomValidator) sender;
ddlDateofBirthDay = (DropDownList)validator.Parent.FindControl("ddlDateofBirthDay");
ddlDateofBirthMonth = (DropDownList)validator.Parent.FindControl("ddlDateofBirthMonth");
ddlDateofBirthYear = (DropDownList)validator.Parent.FindControl("ddlDateofBirthYear");
if (ddlDateofBirthDay.SelectedIndex == 0 || ddlDateofBirthMonth.SelectedIndex == 0 ||
ddlDateofBirthYear.SelectedIndex == 0)
{
e.IsValid = false;
}
else
{
string dateOfBirthString = ddlDateofBirthDay.SelectedItem.Value + "/" + dateTools.MonthNumber(ddlDateofBirthMonth.SelectedItem.Value) +
"/" + ddlDateofBirthYear.SelectedItem.Value;
try
{
DateTime.Parse(dateOfBirthString, Culture);
}
catch
{
e.IsValid = false;
}
}
}
答案 2 :(得分:0)
见下文。主要功能是isDate,您可以传递日,月和年。这些是javascript函数,因此它会警告相关消息并返回false。
日期2月将计算过去一年的feb天数。
DaysArray保留每个月的天数数组。
var minYear=1900;
var maxYear=2100;
function daysInFebruary (year){
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
for (var i = 1; i <= n; i++) {
this[i] = 31
if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
if (i==2) {this[i] = 29}
}
return this
}
function isDate(strDay,strMonth,strYear ){
var daysInMonth = DaysArray(12)
if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
for (var i = 1; i <= 3; i++) {
if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
}
month=parseInt(strMonth)
day=parseInt(strDay)
year=parseInt(strYr)
if (strMonth.length<1 || month<1 || month>12){
alert("Please enter a valid month")
return false
}
if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
alert("Please enter a valid day")
return false
}
if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
return false
}
return true
}
答案 3 :(得分:0)
您可以使用JavaScript加载隐藏输入,其中包含更改事件中三个下拉列表的值,即
hidDate.value = ddlDay.value + "/" + ddlMonth.value + "/" ddlYear.value;
然后使用比较验证控件,将dataType设置为DateTime验证隐藏的输入。你需要确保你输入数值的下拉菜单,并且只在必要时连接./ / p>
(注意:这仅用于概念而不是语法正确)
答案 4 :(得分:0)
// validate that the user made a selection other than default
function isChosen(select) {
if (select.selectedIndex == 0) {
alert("Please make a choice from the list.");
return false;
} else {
return true;
}
}
function daysInFebruary (year){
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
for (var i = 1; i <= n; i++) {
this[i] = 31
if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
if (i==2) {this[i] = 29}
}
return this
}
function focusElement(formName, elemName) {
var elem = document.forms[formName].elements[elemName];
elem.focus();
elem.select();
}
function valid(dob1,dob2,dob3){
var daysInMonth = DaysArray(12)
var date=dob1.value
var month=dob2.value
var year=dob3.value
if((month==2 && date>daysInFebruary(year)) || date>daysInMonth[month]){
alert("Please enter a valid day")
return false
}
return true
}
function validateForm(form) {
if (isChosen(form.dob1)) {
if (isChosen(form.dob2)) {
if (isChosen(form.dob3)) {
if(valid(form.dob1,form.dob2,form.dob3)){
document.frm.action="<%=contextPath%>/Conformation";
//"conformation" is for servelet mapping
document.frm.submit();
}
}
}
}
return false;
}
</script>
<script language="javascript">
function gotoAddResourceAction()
{
validateForm(document.frm)
}
</script>
</head>
<body>
<form name="frm" method="post">
<table width="100%" id='table1' border="0" cellspacing="2" cellpadding="2">
<tr><td width="40%" class="txt-label">
<SPAN CLASS="txt-label">Date Of Birth (DOB)</SPAN><font color='red'> *</font>:
</td>
<td width="60%" class="txt-lable">
<Select name="dob1"><option value="" selected>Date</option>
<option value="1" >1</option><option value="2" >2</option><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="dob2"><option value="" selected>Month</option>
<option value="1" >January</option><option value="2" >February</option><option value="3">March</option><option value="4">April</option><option value="5">May</option><option value="6">June</option><option value="7">July</option><option value="8">August</option><option value="9">September</option><option value="10">October</option><option value="11">November</option><option value="12">December</option></select>
<Select name="dob3"><option value="" selected>Year</option>
<option value="1950" >1950</option><option value="1951" >1951</option><option value="1952">1952</option><option value="1953">1953</option><option value="1954">1954</option><option value="1955">1955</option><option value="1956">1956</option><option value="1957">1957</option><option value="1958">1958</option><option value="1959">1959</option><option value="1960">1960</option><option value="1961">1961</option><option value="1962">1962</option><option value="1963">1963</option><option value="1964">1964</option><option value="1965">1965</option><option value="1966">1966</option><option value="1967">1967</option><option value="1968">1968</option><option value="1969">1969</option><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option><option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1981">1981</option><option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option><option value="1986">1986</option>
<option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option><option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option><option value="1994">1994</option><option value="1995">1995</option><option value="1996">1996</option><option value="1997">1997</option><option value="1998">1998</option><option value="1999">1999</option><option value="2011">2011</option></select>
</td></tr>
<table width="100%" border="0" align="center">
<tr><td>
<input type="button" name="SubmitForm" value="Submit" class="button" onMouseOver=(this.className='buttonover') onMouseOut=(this.className='button') onClick="gotoAddResourceAction()">
</td></tr>
</table>