Javascript 预订日历小部件,防止最后一分钟预订
我想修改我的预订日历小部件,这样可以防止人们在最后一分钟预订。我想这样做,只允许预订至少提前3天。代码如下所示,我猜它与datepicker有关,但我可能错了:Javascript 预订日历小部件,防止最后一分钟预订,javascript,php,jquery,jquery-ui,Javascript,Php,Jquery,Jquery Ui,我想修改我的预订日历小部件,这样可以防止人们在最后一分钟预订。我想这样做,只允许预订至少提前3天。代码如下所示,我猜它与datepicker有关,但我可能错了: class Calendar_widget extends WP_Widget { function Calendar_widget(){ parent::__construct( 'calendar_widget', 'Calendar Widget' ); } function do_wi
class Calendar_widget extends WP_Widget {
function Calendar_widget(){
parent::__construct( 'calendar_widget', 'Calendar Widget' );
}
function do_with_time_stamp_something(&$arrayOfTimeStamps, $timeStamp){
// var_dump($timeStamp);
if(!empty($timeStamp)){
$date_link = date( "F.j.Y", $timeStamp );
array_push($arrayOfTimeStamps, array(
get_site_url()."/event_category/event/?date=".$date_link,
date( "m/d/Y", $timeStamp )
));
}
}
function widget($args, $instance) {
extract($args);
$title = apply_filters('widget_title', $instance['title']);
$i=0;
global $wpdb;
$data = array();
$wpdb->query("
SELECT $wpdb->postmeta.`meta_value`
FROM $wpdb->postmeta
INNER JOIN $wpdb->posts
ON $wpdb->postmeta.post_id=$wpdb->posts.ID
WHERE (`meta_key` = '".SHORTNAME."_event_date'
OR `meta_key` = '".SHORTNAME."_multiple_weeks_array'
OR `meta_key` = '".SHORTNAME."_multiple_weeks_array_1') and $wpdb->posts.post_status = 'publish' and $wpdb->posts.post_type = 'event'
");
foreach($wpdb->last_result as $v){
$meta_value = maybe_unserialize($v->meta_value);
if(is_array($meta_value)){
foreach ($meta_value as $timeStamp) {
// do_with_time_stamp_something($data, $timeStamp);
if(!empty($timeStamp)){
$date_link = date( "F.j.Y", $timeStamp );
array_push($data, array(
get_site_url()."/event_category/event/?date=".$date_link,
date( "m/d/Y", $timeStamp )
));
}
}
} else {
// var_dump($meta_value);
if(!empty($meta_value)){
// var_dump($meta_value);
$timeStamp = strtotime($meta_value);
$date_link = date( "F.j.Y", $timeStamp );
array_push($data, false);
}
// do_with_time_stamp_something($data, $meta_value);
if(!empty($timeStamp)){
$date_link = date( "F.j.Y", $timeStamp );
array_push($data, array(
get_site_url()."/event_category/event/?date=".$date_link,
date( "m/d/Y", $timeStamp )
));
}
}
}
?>
<?php
if(isset($_GET['date'])){
// var_dump($_GET['date']);die;
$date = $_GET['date'];
$a = strtotime( $date );
$final = date( "m/d/Y", $a );
// echo '---';
// var_dump($final);die;
} else {
$final = '';
}
?>
<div class="block_datepicker">
<div id="datepicker" class="calendar">
<script>
jQuery(document).ready(function($){
var events = [
<?php foreach ($data as $value){ ?>
{ Title: '<?php echo"$value[0]"; ?>', Date: new Date('<?php echo"$value[1]"; ?>') },
<?php } ?>
];
$("#datepicker").datepicker({
defaultDate: new Date ('<?php echo $final; ?>'),
beforeShowDay: function(date) {
var result = [true, '', null];
var matching = $.grep(events, function(event) {
return event.Date.valueOf() === date.valueOf();
});
// console.log(matching);
if (matching.length) {
result = [true, 'highlight', null];
}
return result;
},
onSelect: function(dateText) {
var calendar = dateText;
$('.about_event[eventdata!="'+calendar+'"]').parents('.events').hide();
// $('.about_event[eventdata=="03/28/2014"]').css('display', 'none');
// $('.about_event').each(function(){
// if($(this).attr('eventdata') != dateText){
// $(this).parents('.events').hide();
// }
// else{
// $(this).parents('.events').show();
// }
// })
// console.log(cont);
var date,
selectedDate = new Date(dateText),
i = 0,
event = null;
while (i < events.length && !event) {
date = events[i].Date;
if (selectedDate.valueOf() === date.valueOf()) {
event = events[i];
//console.log(event);
}
i++;
}
if (event) {
//LIKE in OLD TIME
window.location.href = event.Title;
}
}
});
});
</script>
</div>
</div>
<?php
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
// $instance['phone'] = strip_tags($new_instance['phone']);
// $instance['email'] = strip_tags($new_instance['email']);
return $instance;
}
function form($instance) {
if(isset($instance['title'])){
$title = esc_attr($instance['title']);
}
// if(isset($instance['phone'])){
// $phone = esc_attr($instance['phone']);
// }
// if(isset($instance['email'])){
// $email = esc_attr($instance['email']);
// }
?>
<!-- <div class="contact_us"> -->
<!-- <p> -->
<!-- <label for="<?php //echo $this->get_field_id('title'); ?>"><?php //_e('Title:'); ?></label> -->
<!-- <input id="<?php //echo $this->get_field_id('title'); ?>" name="<?php //echo $this->get_field_name('title'); ?>" type="text" value="<?php //if(isset($title)) echo $title; ?>" /> -->
<!-- </p> -->
<!-- <p> -->
<!-- <label for="<?php //echo $this->get_field_id('phone'); ?>"><?php //_e('Phone:'); ?></label> -->
<!-- <input id="<?php //echo $this->get_field_id('phone'); ?>" name="<?php //echo $this->get_field_name('phone'); ?>" type="text" value="<?php //if(isset($phone)) echo $phone; ?>" /> -->
<!-- </p> -->
<!-- <p> -->
<!-- <label for="<?php //echo $this->get_field_id('email'); ?>"><?php //_e('Email:'); ?></label> -->
<!-- <input id="<?php //echo $this->get_field_id('email'); ?>" name="<?php //echo $this->get_field_name('email'); ?>" type="text" value="<?php //if(isset($email)) echo $email; ?>" /> -->
<!-- </p> -->
<!-- </div> -->
<?php
}
}
?>
嗨,我想可能是php文件。代码如下:
<script type="text/javascript">
function show_or_hide(){
cb = document.getElementById("banner-widget-use");
if (cb.checked){
document.getElementById('fake').disabled = true;
}
else{
document.getElementById('fake').disabled = false;
}
cd = document.getElementById("second-day-use");
if (cd.checked){
document.getElementById('fake_day').disabled = true;
}
else{
document.getElementById('fake_day').disabled = false;
}
cd1 = document.getElementById("second-day-use_1");
if (cd1.checked){
document.getElementById('fake_day_1').disabled = true;
}
else{
document.getElementById('fake_day_1').disabled = false;
}
}
ID,短名称。\事件\地点,true;
$event\u date=get\u post\u meta$post->ID,SHORTNAME.\u event\u date,true;
如果$event_date!={
$date=$event\u date;
}
否则{
$date=;
}
$time=get\u post\u meta$post->ID,SHORTNAME.\u event\u time,true;
$array\u start=get\u post\u meta$post->ID,SHORTNAME.\u event\u date\u array\u start,true;
如果$array_start!={
$start\u date=$array\u start;
}
否则{
$start_date=;
}
$array\u end=get\u post\u meta$post->ID,SHORTNAME.\u event\u date\u array\u end,true;
如果$array_end!={
$end\u date=$array\u end;
}
否则{
$end_date=;
}
$date\u day=get\u post\u meta$post->ID,SHORTNAME.\u event\u multiple\u week\u day,true;
$multiple\u from=get\u post\u meta$post->ID,SHORTNAME.\u event\u multitime\u time\u begin,true;
$date\u day\u 1=get\u post\u meta$post->ID,SHORTNAME.\u event\u multiple\u week\u day\u 1,true;
$multiple\u from\u 1=get\u post\u meta$post->ID,SHORTNAME.\u event\u multitime\u time\u begin\u 1,true;
$use\u multidate\u event=get\u post\u meta$post->ID,SHORTNAME.\u use\u multidate\u event,true;
$use\u second\u event\u day=get\u post\u meta$post->ID,SHORTNAME.\u use\u second\u event\u day,true;
$time\u price=get\u post\u meta$post->ID,SHORTNAME.\u time\u price,true;
$time\u price\u child=get\u post\u meta$post->ID,SHORTNAME.\u time\u price\u child,true;
$time\u price\u other=get\u post\u meta$post->ID,SHORTNAME.\u time\u price\u other,true;
$due\u balance=get\u post\u meta$post->ID,SHORTNAME.\u due\u balance,true;
$max\u count=get\u post\u meta$post->ID,SHORTNAME.\u max\u count,true;
$reserved=get\u post\u meta$post->ID,SHORTNAME.\u reserved,true;
$date\u day\u next=数组;
$multiple\u from\u next=数组;
$date\u day\u 1\u next=数组;
$multiple\u from\u 1\u next=数组;
$use\u multidate\u event\u next=数组;
$use\u second\u event\u day\u next=数组;
$time\u price\u next=数组;
$time\u price\u child\u next=数组;
$time\u price\u other\u next=数组;
$due\u balance\u next=数组;
$max\u count\u next=数组;
$reserved_next=数组;
对于$i=1$i ID,SHORTNAME.\u事件\u多个\u周\u天\u下一天。$i,对;
$multiple\u from\u next[$i]=获取\u post\u meta$post->ID,SHORTNAME.\u事件\u multitime\u时间\u begin\u next.$i,true;
//$multiple\u till\u next[$i]=获取\u post\u meta$post->ID,SHORTNAME.\u事件\u multitime\u时间\u end\u next.$i,true;
$date\u day\u 1u next[$i]=获取帖子\u meta$post->ID,SHORTNAME.\u事件\u多周\u day\u next.$i,true;
$multiple\u from\u 1u next[$i]=获取\u post\u meta$post->ID,SHORTNAME.\u事件\u multitime\u时间\u开始\u 1u next.$i,true;
//$multiple\u till\u 1\u next[$i]=获取\u post\u meta$post->ID,SHORTNAME.\u事件\u multitime\u时间\u end\u next.$i,true;
$use\u multidate\u event\u next[$i]=获取\u post\u meta$post->ID,SHORTNAME.\u使用\u multidate\u event\u next.$i,true;
$use_second_event_day_next[$i]=get_post_meta$post->ID,SHORTNAME.\u use_second_event_day_next.$i,true;
$time\u price\u next[$i]=get\u post\u meta$post->ID,SHORTNAME.\u time\u price\u next.$i,true;
$time\u price\u child\u next[$i]=get\u post\u meta$post->ID,SHORTNAME.\u time\u price\u child\u next.$i,true;
$time\u price\u other\u next[$i]=get\u post\u meta$post->ID,SHORTNAME.\u time\u price\u other\u next.$i,true;
$due\u balance\u next[$i]=获取\u post\u meta$post->ID,SHORTNAME.\u due\u balance\u next.$i,true;
$max\u count\u next[$i]=get\u post\u meta$post->ID,SHORTNAME.\u max\u count\u next.$i,true;
$reserved\u next[$i]=get\u post\u meta$post->ID,SHORTNAME.\u reserved\u next.$i,true;
}
$week_days=数组'Sunday'、'Sunday'、'Sunday'、'suday'、'suday'、'suday'、'suday'、'suday'、'suday'、'suday'、'suday'、'suday'、'suday'、'suda;
?>
jQueryfunction${
$event date.datepicker{dateFormat:'MM-dd,yy'};
$event date array start.datepicker{dateFormat:'MM-dd,yy'};
$event date array end.datepicker{dateFormat:'MM-dd,yy'};
$event-date-array-start_1.datepicker{dateFormat:'MM-dd,yy'};
$event-date-array-end_1.datepicker{dateFormat:'MM-dd,yy'};
如果$'banner-widget-use'.is':已选中{
$.multidate.show;
$'.standart_事件'.hide;
}否则{
$.multidate.hide;
$‘标准活动’。展览;
}
$'banner-widget-use'。单击函数{
$.multidate.slideTogglethis.checked;
$'.standart_事件'.slideTogglethis.checked;
$.add_time.slideTogglethis.checked;
$.delete_time.slideTogglethis.checked;
};
如果$‘第二天使用’。是
“:选中”{
$.second_day.show;
$。添加时间。显示;
$”。删除“时间”。显示;
}否则{
$.second_day.hide;
$。添加时间。隐藏;
$”。删除“时间”。隐藏;
}
$“第二天使用”。单击功能{
};
};
_事件地点id=事件地点值=样式=宽度:100%;>
_事件\日期id=事件日期值=样式=宽度:100%;>
_事件\时间id=事件时间值=样式=宽度:100%;>
“.uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。;
回响
}
否则{
回显“”。u uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。;
回响
}
?>
_事件\日期\数组\开始id=事件日期数组开始值=样式=宽度:100%;/>
_事件\日期\数组\结束id=事件日期数组结束值=样式=宽度:100%;/>
_事件\多周\日名称=\事件\多周\日>
$day_name{
如果$day\u id==$date\u day{?>
已选择>
>
_事件\多次\时间\开始值=>
_时间\价格值=>
_时间\价格\子值=>
_时间\价格\其他值=>
_到期日余额值=>
_最大计数值=>
_保留值=>
”“还有,简称。;
回响
}
elseif$use\u second\u event\u day==否{
回显“”。_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。;
回响
}
否则{
回显“”。_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。;
回响
}
?>
_事件\多周\日\名=\事件\多周\日\名>
$day_name{
如果$day\u id==$date\u day\u next1{?>
已选择>
>
_事件\u多次\u时间\u开始\u 1值=>
_时间\价格值=>
_时间\价格\子值=>
_时间\价格\其他值=>
_到期日余额值=>
_最大计数值=>
_保留值=>
和
id=第二天使用_1值=选中的是=选中的>
使用onSelect at datepicker比较日历值。如果日历不是您想要的结果,请提前3天致电returnHi,谢谢您的回复,但我不太确定您的意思。
<?php if(!empty($multiple_from_1_next1)){ ?>
<div class="second_day">
<label style="display:block"><?php _e('Every', SHORTNAME ); ?><br/ >
<select id="<?php echo SHORTNAME; ?>_event_multiple_week_day_1_next1" name="<?php echo SHORTNAME; ?>_event_multiple_week_day_1_next1">
<?php foreach ($week_days as $day_id => $day_name) {
if($day_id == $date_day_next1){ ?>
<option value="<?php echo $day_id; ?>" selected><?php echo $day_name; ?></option>
<?php }
else{ ?>
<option value="<?php echo $day_id; ?>"><?php echo $day_name; ?></option>
<?php }
} ?>
</select>
</label>
<label style="display:block"><?php _e('From', SHORTNAME); ?><br/ ><input type="text" name="<?php echo SHORTNAME; ?>_event_multitime_time_begin_1_next1" value="<?php echo $multiple_from_1_next1; ?>" ></label>
</div>
<?php } ?>
<?php $y = 1; ?>
<?php for($i = 1; $i <= 100; $i++){
$block = get_post_meta( $post->ID, SHORTNAME.'_event_multitime_time_begin_1_next'.$i);
if(isset($block[0]) && !empty($block[0])){
?>
<div class="second_day">
<label style="display:block"><?php _e('Every', SHORTNAME ); ?><br/ >
<select id="<?php echo SHORTNAME; ?>_event_multiple_week_day_1_next<?php echo $i; ?>" name="<?php echo SHORTNAME; ?>_event_multiple_week_day_1_next<?php echo $i; ?>">
<?php foreach ($week_days as $day_id => $day_name) {
$ddn = $date_day_1_next[$i];
if($day_id == $ddn){ ?>
<option value="<?php echo $day_id; ?>" selected><?php echo $day_name; ?></option>
<?php }
else{ ?>
<option value="<?php echo $day_id; ?>"><?php echo $day_name; ?></option>
<?php }
} ?>
</select>
</label>
<?php
$mfn = $multiple_from_1_next[$i];
$use_day = $use_second_event_day_next[$i];
$price = $time_price_next[$i];
$price_child = $time_price_child_next[$i];
$price_other = $time_price_other_next[$i];
$due_balance = $due_balance_next[$i];
$max_cap = $max_count_next[$i];
if(isset($reserved_next[$i]) && !empty($reserved_next[$i])){
$reserve = $reserved_next[$i];
}
else{
$reserve = 0;
}
?>
<label style="display:block"><?php _e('From', SHORTNAME); ?><br/ ><input type="text" name="<?php echo SHORTNAME; ?>_event_multitime_time_begin_1_next<?php echo $y; ?>" value="<?php echo $mfn; ?>" ></label>
<label style="display:block"><?php _e('Price Adult', SHORTNAME); ?><br/ ><input type="text" name="<?php echo SHORTNAME; ?>_time_price_next<?php echo $y; ?>" value="<?php echo $price; ?>" ></label>
<label style="display:block"><?php _e('Price Child', SHORTNAME); ?><br/ ><input type="text" name="<?php echo SHORTNAME; ?>_time_price_child_next<?php echo $y; ?>" value="<?php echo $price_child; ?>" ></label>
<label style="display:block"><?php _e('Price Other', SHORTNAME); ?><br/ ><input type="text" name="<?php echo SHORTNAME; ?>_time_price_other_next<?php echo $y; ?>" value="<?php echo $price_other; ?>" ></label>
<label style="display:block"><?php _e('Minimum Deposit (%)', SHORTNAME); ?><br/ ><input type="text" name="<?php echo SHORTNAME; ?>_due_balance_next<?php echo $y; ?>" value="<?php echo $due_balance; ?>" ></label>
<label style="display:block"><?php _e('Maximum Capacity', SHORTNAME); ?><br/ ><input type="text" name="<?php echo SHORTNAME; ?>_max_count_next<?php echo $y; ?>" value="<?php echo $max_cap; ?>" ></label>
<input type="hidden" name="<?php echo SHORTNAME; ?>_reserved_next<?php echo $y; ?>" value="<?php echo $reserve; ?>" >
<label for="wpcitytour_use_multidate_event" style="margin-right:10px;">And</label>
<input type="checkbox" num="<?php echo $i; ?>" name="wpcitytour_use_second_event_day_next<?php echo $y; ?>" id="second-day-use_1" value="yes" checked="checked" ><br>
</div>
<?php
$y++;
}
}?>
</div>
<script type="text/javascript">
jQuery(document).ready(function($){
$('.second_day').last().find('input').last().removeAttr('checked');
$(':checkbox').live('change', function() {
if($(this).is(":checked")) {
var id = $('.second_day').length;
$('.second_day').last().after('<div class="second_day">Every<br /><select id="wpcitytour_event_multiple_week_day_1_next'+id+'" name="wpcitytour_event_multiple_week_day_1_next'+id+'"><option value="0">Sunday</option><option value="1">Monday</option><option value="2">Tuesday</option><option value="3">Wednesday</option><option value="4">Thursday</option><option value="5">Friday</option><option value="6">Saturday</option></select><label style="display:block">From<br/><input type="text" name="wpcitytour_event_multitime_time_begin_1_next'+id+'" value="" ></label><br/><label style="display:block">Price Adult<br/ ><input type="text" name="wpcitytour_time_price_next'+id+'" value="" ></label><br /><label style="display:block">Price Child<br/ ><input type="text" name="wpcitytour_time_price_child_next'+id+'" value="" ></label><br /><label style="display:block">Price Senior / Student<br/ ><input type="text" name="wpcitytour_time_price_other_next'+id+'" value="" ></label><br /><label style="display:block">Maximum Capacity<br/ ><input type="text" name="wpcitytour_max_count_next'+id+'" value="" ></label><br /><input type="hidden" name="wpcitytour_reserved_next'+id+'" value="0" ><label for="wpcitytour_use_multidate_event'+id+'" style="margin-right:10px;">And</label><input type="checkbox" name="wpcitytour_use_second_event_day'+id+'" id="*emphasized text*second-day-use" value="yes"><br><input type="hidden" id="fake" name="wpcitytour_use_multidate_event'+id+'" value="no" disabled="disabled">');
return false;
} else{
var number = $(this).attr('num');
var post_id = $('#post_ID').val();
var send_data = {
post_id: post_id,
number: number,
action: "delete_time"
};
$.ajax({
type: 'POST',
url: ajaxurl,
dataType: 'json',
data: send_data,
success:function(result){
if(result.error == 0){
}
}
});
if($(this).parents().hasClass('second_day')){
$(this).parents('.second_day').next().find('input').val('');
$(this).parents('.second_day').next().addClass('trash').removeClass( "second_day" );
$('.trash').first().hide();
}
else{
$('.second_day').last().find('input').val('');
$('.second_day').last().addClass('trash').removeClass( "second_day" );
$('.trash').first().hide();
}
return false;
}
});
return false;
});
</script>