3个下拉菜单的日期验证!? [英] Date Validation for 3 Dropdowns!?

查看:55
本文介绍了3个下拉菜单的日期验证!?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,


这个问题一直困扰着我一段时间,并且严重地让我感到沮丧!也许我只是没有正确的语法,但

问题相当简单......


看看:
http://www.gasthofreiner.com/


左边的小预订表格,我们正在使用同一个,但我们需要

添加javascript验证以确保以下内容...


- 过去无法选择日期

- 无法选择无效日期,即2月30日


我也会喜欢它,如果你在第一个框中做出选择,那么它将b / b $ b $镜像到第二个,但也许一天之后?我觉得这可能是一件很难的事吗?


真的很感谢任何人的帮助,我已经尝试了这么多剧本,而且还不能

让一个人工作。


干杯,Ash

Hi everyone,

This problem has been puzzling me for a fair time now, and has severely
frustrated me!! Perhaps I''m just not getting the syntax right, but the
problem is rather simple...

Take a look at:
http://www.gasthofreiner.com/

The small booking form on the left, we''re using the same one, but we need to
add javascript validation to ensure the following...

- That a date cannot be selected thats in the past
- That an invalid date cannot be selected, i.e. Feb 30th

I would also like it if when you make a selection in the first box, it
mirrors it to the second, but perhaps a day later? I think this may be a
little tricky?

REALLY appreciate anyones help, I''ve tried so many scripts, and just cannot
get one working.

Cheers, Ash

推荐答案

其实,这里是'表单使用的javascript块,你可以看到一些我试图确保一个日期没有在另一个之前的Javascript ...但是

它没工作!?


------------


< SCRIPT language ="的JavaScript" TYPE =" text / javascript">

函数doCheckAvail(){

if(validateFields()){

var form = document .myForm;


//收集您的屏幕数据

var arrDay = form.ARRIVAL_DAY.value;

var arrMon = form .ARRIVAL_MONTH.value;

var arrYear = form.ARRIVAL_YEAR.value;

var depDay = form.DEPARTURE_DAY.value;

var depMon = form.DEPARTURE_MONTH.value;

var depYear = form.DEPARTURE_YEAR.value;

var adult = form.ADULTS.value;

var child = form.CHILDREN.value;


var chainCode =" vones";

var hotelCode ="<%= TheHotelCode%>" ;

var email ="<%= TheHotelEmail%>" ;;

var website =" http%3a%2f%2fwww。<%= TheHotelWebsite%>" ;;

var barServer =

" https://agent.synxis.com/bar/BarServlet?selector = Login" ;;

//开始创建网址

var url = barServer +

"& cid =" + chainCode + //您的连锁代码

"& hid =" + hotelCode + //您的酒店代码

"& hea =" + email + //您的酒店联系电子邮件

"& url =" + website + //您的酒店网站

"& locale = en_GB" + //您所在的区域设置

"& checkAvailability = true" + //提醒您

去房间页面

"& bam =" + arrMon + //抵达月

"& bad =" + arrDay + //抵达日

"& bay =" + arrYear + //抵达年份

"& bdm =" + depMon + //离境月

"& bdd =" + depDay + //出发日

"& bdy =" + depYear + //出发年份

"& noa =" + adult + //成人人数

"& noc =" + child; //孩子的数量


//现在用这个网址弹出新窗口。

document.location = url;

// window.open(url," BAR",

" width = 778,height = 600,status = yes,resizable = yes,scr ollbars = yes");

}

else {

alert(你必须输入有效信息);

}

}


函数validateFields(){


// ASH:将两个日期连接成单个变量 - 或至少

尝试!!!

// var form = document.myForm;


// var arrDay = parseInt(form.ARRIVAL_DAY) .value);

// var arrMon = parseInt(form.ARRIVAL_MONTH.value);

// var arrYear = parseInt(form.ARRIVAL_YEAR.value);

// var depDay = parseInt(form.DEPARTURE_DAY.value);

// var depMon = parseInt(form.DEPARTURE_MONTH.value);

// var depYear = parseInt(form.DEPARTURE_YEAR.value);

// var TheFromDate = arrDay +" /" + arrMon +" /" + arrYear

// var TheToDate = depDay +" /" + depMon +" /" + depYear


// if(TheFromDate)> (TheToDate){

//提醒(''到达日期必须在出发日期之前'')

// alert(TheFromDate +&& ;+ TheToDate

//}


返回true;

}


< / SCRIPT>
Actually, here''s the lump of javascript that the form uses, you can see some
Javascript that I tried to make sure one date wasn''t before the other...but
it didn''t work!?

------------

<SCRIPT language="JavaScript" TYPE="text/javascript">
function doCheckAvail(){
if(validateFields()){
var form = document.myForm;

//collect your screen data
var arrDay = form.ARRIVAL_DAY.value;
var arrMon = form.ARRIVAL_MONTH.value;
var arrYear = form.ARRIVAL_YEAR.value;
var depDay = form.DEPARTURE_DAY.value;
var depMon = form.DEPARTURE_MONTH.value;
var depYear = form.DEPARTURE_YEAR.value;
var adult = form.ADULTS.value;
var child = form.CHILDREN.value;

var chainCode = "vones";
var hotelCode = "<%= TheHotelCode %>";
var email = "<%= TheHotelEmail %>";
var website = "http%3a%2f%2fwww.<%= TheHotelWebsite %>";
var barServer =
"https://agent.synxis.com/bar/BarServlet?selector=Login";
//start creating the url
var url = barServer+
"&cid="+chainCode+ //your chain code
"&hid="+hotelCode+ //your hotel code
"&hea="+email+ //your hotel contact email
"&url="+website+ //your hotel website
"&locale=en_GB"+ //the locale you are in
"&checkAvailability=true"+ //alerts that you are
going to the room page
"&bam="+arrMon+ //arrival month
"&bad="+arrDay+ //arrival day
"&bay="+arrYear+ //arrival year
"&bdm="+depMon+ //departure month
"&bdd="+depDay+ //departure day
"&bdy="+depYear+ //departure year
"&noa="+adult+ //# of adults
"&noc="+child; //# of children

//now pop-up the new window with this url.
document.location = url;
// window.open(url, "BAR",
"width=778,height=600,status=yes,resizable=yes,scr ollbars=yes");
}
else{
alert("You must enter valid information");
}
}

function validateFields() {

// ASH: Concatenate the two dates into single variables - OR AT LEAST
TRY!!!
// var form = document.myForm;

// var arrDay = parseInt(form.ARRIVAL_DAY.value);
// var arrMon = parseInt(form.ARRIVAL_MONTH.value);
// var arrYear = parseInt(form.ARRIVAL_YEAR.value);
// var depDay = parseInt(form.DEPARTURE_DAY.value);
// var depMon = parseInt(form.DEPARTURE_MONTH.value);
// var depYear = parseInt(form.DEPARTURE_YEAR.value);
// var TheFromDate = arrDay+"/"+arrMon+"/"+arrYear
// var TheToDate = depDay+"/"+depMon+"/"+depYear

// if (TheFromDate) > (TheToDate) {
// alert(''The Date of Arrival must be prior to the Date of Departures'')
// alert(TheFromDate+" & "+TheToDate)
// }

return true;
}

</SCRIPT>


Ash写道:
Ash wrote:
实际上,这里是javascript的一块块表单使用,[...]


而不是使用该代码创建提交,为什么不只是

正确提交表单?


函数isValidDate(dt,y,m,d){

return(y == dt.getFullYear())&& (m == dt.getMonth())

&& (d = dt.getDate());

}


函数isValidSubmission(form){

var elem = form。元素,

now = new Date(),

y,m,d,arr,dep;


arr = new Date (

y = + elem.bay.value,

m = elem.bam.value - 1,

d = + elem.bad.value

);

if(!isValidDate(arr,y,m,d)){

/ *抵达日期无效。 * /

返回false;

}

if(arr< = now){

/ * Arrival日期是在今天之前。 * /

返回false;

}


dep =新日期(

y = + elem .bdy.value,

m = elem.bdm.value - 1,

d = + elem.bdd.value

);

if(!isValidDate(dep,y,m,d)){

/ *出发日期无效。 * /

返回false;

}

if(dep< arr){

/ *出发日期是在抵达日期之前。 * /

返回false;

}

返回true;

}


< form method =" get"

action =" https://agent.synxis.com/bar/BarServlet?selector = Login"

onsubmit =" return isValidSubmission(this);">

< input name =" cid"类型= QUOT;隐藏" value =" vones">

< input name =" hid"类型= QUOT;隐藏" value ="<%= TheHotelCode%>">

< input name =" hea"类型= QUOT;隐藏" value ="<%= TheHotelEmail%>">

< input name =" url" type =" hidden"

value =" http://www.<%= TheHotelWebsite%>">

< input name =" ;语言环境"类型= QUOT;隐藏" value =" en_GB">

< input name =" checkAvailability"类型= QUOT;隐藏" value =" true">

< input name =" noc"类型= QUOT;隐藏" value =" 0">


<! - 抵达月份 - >

< select name =" bam" size =" 1">

<! - ... - >

< / select>

< ; - 到达日 - >

< select name =" bad" size =" 1">

<! - ... - >

< / select>

< ; - - 到达年份 - >

< select name =" bay" size =" 1">

<! - ... - >

< / select>


<! - 出发月 - >

< select name =" bdm" size =" 1">

<! - ... - >

< / select>

< ; - 出发日 - >

< select name =" bdd" size =" 1">

<! - ... - >

< / select>

< ; - 出发年份 - >

< select name =" bdy size =" 1">

<! - ... - >

< / select>


<! - 成人人数 - >

< select name =" noa" size =" 1">

<! - ... - >

< / select>

< ; / form>


子项数(noc)包含在隐藏元素中

您没有提供输入该信息的任何方式。


目前,与当天相符的抵达日期将被视为无效。将其更改为有效并非易事。那天还有足够的时间来处理预订吗?如果访客在千里之外的地方花了几美元(而且你不知道他们是不是),他们真的打算今天预订吗?
//现在用这个网址弹出新窗口。
Actually, here''s the lump of javascript that the form uses, [...]
Rather than using that code to create the submission, why don''t you just
submit the form properly?

function isValidDate(dt, y, m, d) {
return (y == dt.getFullYear()) && (m == dt.getMonth())
&& (d = dt.getDate());
}

function isValidSubmission(form) {
var elem = form.elements,
now = new Date(),
y, m, d, arr, dep;

arr = new Date(
y = +elem.bay.value,
m = elem.bam.value - 1,
d = +elem.bad.value
);
if(!isValidDate(arr, y, m, d)) {
/* Arrival date is not valid. */
return false;
}
if(arr <= now) {
/* Arrival date is before today. */
return false;
}

dep = new Date(
y = +elem.bdy.value,
m = elem.bdm.value - 1,
d = +elem.bdd.value
);
if(!isValidDate(dep, y, m, d)) {
/* Departure date is not valid. */
return false;
}
if(dep < arr) {
/* Departure date is before arrival date. */
return false;
}
return true;
}

<form method="get"
action="https://agent.synxis.com/bar/BarServlet?selector=Login"
onsubmit="return isValidSubmission(this);">
<input name="cid" type="hidden" value="vones">
<input name="hid" type="hidden" value="<%= TheHotelCode %>">
<input name="hea" type="hidden" value="<%= TheHotelEmail %>">
<input name="url" type="hidden"
value="http://www.<%= TheHotelWebsite %>">
<input name="locale" type="hidden" value="en_GB">
<input name="checkAvailability" type="hidden" value="true">
<input name="noc" type="hidden" value="0">

<!-- Arrival month -->
<select name="bam" size="1">
<!-- ... -->
</select>
<!-- Arrival day -->
<select name="bad" size="1">
<!-- ... -->
</select>
<!-- Arrival year -->
<select name="bay" size="1">
<!-- ... -->
</select>

<!-- Departure month -->
<select name="bdm" size="1">
<!-- ... -->
</select>
<!-- Departure day -->
<select name="bdd" size="1">
<!-- ... -->
</select>
<!-- Departure year -->
<select name="bdy" size="1">
<!-- ... -->
</select>

<!-- Number of adults -->
<select name="noa" size="1">
<!-- ... -->
</select>
</form>

The number of children (noc) is included amongst the hidden elements as
you haven''t provided any way to input that information.

At the present moment, an arrival date that matches the current day will
be considered invalid. Changing it to be valid is not trivial. Are there
enough hours left in the day to process the booking? If the visitor is
thousands of miles away (and you don''t know if they are or not), did
they really intend to book today?
//now pop-up the new window with this url.




如果你确实想要使用弹出窗口,那么你可以包括这个函数:


函数submitToPopup(表格){

if(''function''== typeof this.open){

this.open(

'''',

form.target,

''width = 778,height = 600,status ,可调整大小,滚动条

);

}

返回true;

}

将提交监听器改为:


onsubmit =" return isValidSubmission(this)&& submitToPopup(this);"


并将一个target属性添加到FORM元素:


< form target =" booking" ...>


[snip]


希望有所帮助,

Mike


-

Michael Winter

替换.invalid与.uk通过电子邮件回复。



If you really do want to use a pop-up, then you could include this function:

function submitToPopup(form) {
if(''function'' == typeof this.open) {
this.open(
'''',
form.target,
''width=778,height=600,status,resizable,scrollbars
);
}
return true;
}

alter the submit listener to:

onsubmit="return isValidSubmission(this) && submitToPopup(this);"

and add a target attribute to the FORM element:

<form target="booking" ...>

[snip]

Hope that helps,
Mike

--
Michael Winter
Replace ".invalid" with ".uk" to reply by e-mail.


Ash写道:
Ash wrote:
实际上,这里是表格的javascript一块使用,你可以看到一些我试图确保一个日期不是在另一个之前的Javascript ......但是它没有用!?

------------

http://www.mickweb.com/b_and_b/index1.html

Mick

< SCRIPT language =" JavaScript" TYPE =" text / javascript">
函数doCheckAvail(){
if(validateFields()){
var form = document.myForm;

/ /收集您的屏幕数据
var arrDay = form.ARRIVAL_DAY.value;
var arrMon = form.ARRIVAL_MONTH.value;
var arrYear = form.ARRIVAL_YEAR.value;
var depDay = form.DEPARTURE_DAY.value;
var depMon = form.DEPARTURE_MONTH.value;
var depYear = form.DEPARTURE_YEAR.value;
var adult = form.ADULTS.value;
var child = form.CHILDREN.value;

var chainCode =" vones";
var hotelCode ="<%= TheHotelCode%>" ;;
var email ="<%= TheHotelEmail%>" ;;
var website =" http%3a%2f%2fwww。<%= TheHotelWebsite%>&q uot ;;
var barServer =
" https://agent.synxis.com/bar/BarServlet?selector = Login";

//开始创建网址
var url = barServer +
"& cid =" + chainCode + //您的连锁代码
"& hid =" + hotelCode + //您的酒店代码
" ;& hea =" + email + //您的酒店联系电子邮件
"& url =" + website + //您的酒店网站
"& locale = en_GB" + //您所在的区域设置
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
"& bad =" + arrDay + //抵达日
"& bay =" + arrYear + //抵达年份
"& bdm =" + depMon + //出发月
"& bdd =" + depDay + //出发日
"& bdy =" + depYear + //出发年份
"& noa =" + adult + //成人人数
"& noc =" + child; //儿童#
//现在用这个网址弹出新窗口。
document.location = url;
// window.open(url," BAR",
" width = 778,height = 600,status = yes,resizable = yes,scr ollbars = yes");
}
else {
alert(" ;您必须输入有效信息);
}


函数validateFields(){

// ASH:将两个日期连接成单个变量 - 或至少
尝试!!!
// var form = document.myForm;

// var arrDay = parseInt(form.ARRIVAL_DAY.value);
// var arrMon = parseInt(form.ARRIVAL_MONTH.value);
// var arrYear = parseInt(form.ARRIVAL_YEAR.value);
// var depDay = parseInt(form.DEPARTURE_DAY.value );
// var depMon = parseInt(form.DEPARTURE_MONTH.value);
// var depYear = parseInt(form.DEPARTURE_YEAR.value);

// var TheFromDate = arrDay +" /" + arrMon +" /" + arrYear
// var TheToDate = depDay +" /" + depMon +" /" + depYear

// if(TheFromDate)> (TheToDate){
//警告(''到达日期必须在出发日期之前'')
//警告(TheFromDate +"&" + TheToDate)
//}

返回true;
}
< / SCRIPT>
Actually, here''s the lump of javascript that the form uses, you can see some
Javascript that I tried to make sure one date wasn''t before the other...but
it didn''t work!?

------------
http://www.mickweb.com/b_and_b/index1.html
Mick

<SCRIPT language="JavaScript" TYPE="text/javascript">
function doCheckAvail(){
if(validateFields()){
var form = document.myForm;

//collect your screen data
var arrDay = form.ARRIVAL_DAY.value;
var arrMon = form.ARRIVAL_MONTH.value;
var arrYear = form.ARRIVAL_YEAR.value;
var depDay = form.DEPARTURE_DAY.value;
var depMon = form.DEPARTURE_MONTH.value;
var depYear = form.DEPARTURE_YEAR.value;
var adult = form.ADULTS.value;
var child = form.CHILDREN.value;

var chainCode = "vones";
var hotelCode = "<%= TheHotelCode %>";
var email = "<%= TheHotelEmail %>";
var website = "http%3a%2f%2fwww.<%= TheHotelWebsite %>";
var barServer =
"https://agent.synxis.com/bar/BarServlet?selector=Login";
//start creating the url
var url = barServer+
"&cid="+chainCode+ //your chain code
"&hid="+hotelCode+ //your hotel code
"&hea="+email+ //your hotel contact email
"&url="+website+ //your hotel website
"&locale=en_GB"+ //the locale you are in
"&checkAvailability=true"+ //alerts that you are
going to the room page
"&bam="+arrMon+ //arrival month
"&bad="+arrDay+ //arrival day
"&bay="+arrYear+ //arrival year
"&bdm="+depMon+ //departure month
"&bdd="+depDay+ //departure day
"&bdy="+depYear+ //departure year
"&noa="+adult+ //# of adults
"&noc="+child; //# of children

//now pop-up the new window with this url.
document.location = url;
// window.open(url, "BAR",
"width=778,height=600,status=yes,resizable=yes,scr ollbars=yes");
}
else{
alert("You must enter valid information");
}
}

function validateFields() {

// ASH: Concatenate the two dates into single variables - OR AT LEAST
TRY!!!
// var form = document.myForm;

// var arrDay = parseInt(form.ARRIVAL_DAY.value);
// var arrMon = parseInt(form.ARRIVAL_MONTH.value);
// var arrYear = parseInt(form.ARRIVAL_YEAR.value);
// var depDay = parseInt(form.DEPARTURE_DAY.value);
// var depMon = parseInt(form.DEPARTURE_MONTH.value);
// var depYear = parseInt(form.DEPARTURE_YEAR.value);
// var TheFromDate = arrDay+"/"+arrMon+"/"+arrYear
// var TheToDate = depDay+"/"+depMon+"/"+depYear

// if (TheFromDate) > (TheToDate) {
// alert(''The Date of Arrival must be prior to the Date of Departures'')
// alert(TheFromDate+" & "+TheToDate)
// }

return true;
}

</SCRIPT>



这篇关于3个下拉菜单的日期验证!?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆