时间选择器在选择时删除时间(ajax)

时间:2012-12-28 20:27:05

标签: ajax timepicker

我正在为使用日历以及开始和结束时间的移动业务构建预订表单。 我使用Formidable Pro构建了时间戳,它允许我检查“唯一”时间字段,这些字段会在所选日期自动删除它们。但是,它不会自动从开始和结束时间范围内删除时间(即:如果有人选择从早上1点到凌晨3点租用卡车,我需要凌晨1点,凌晨3点,从未来的选项中删除但现在它只删除凌晨1点和凌晨3点)。我需要编写ajax来从选项中删除中间时间。我不知道从哪里开始。这是当前的ajax_time_选项功能。任何正确方向的推动都将受到赞赏。

function ajax_time_options(){
    global $frmpro_settings, $frmdb, $wpdb;

    //posted vars = $time_field, $date_field, $step, $start, $end, $date, $clock
    extract($_POST);

    $time_key = str_replace('field_', '', $time_field);
    $date_key = str_replace('field_', '', $date_field);
    if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', trim($date)))
        $date = FrmProAppHelper::convert_date($date, $frmpro_settings->date_format, 'Y-m-d');
    $date_entries = FrmEntryMeta::getEntryIds("fi.field_key='$date_key' and meta_value='$date'");

    $opts = array('' => '');
    $time = strtotime($start);
    $end = strtotime($end);
    $step = explode(':', $step);
    $step = (isset($step[1])) ? ($step[0] * 3600 + $step[1] * 60) : ($step[0] * 60);
    $format = ($clock) ? 'H:i' : 'h:i A';

    while($time <= $end){
        $opts[date($format, $time)] = date($format, $time);
        $time += $step;
    }

    if($date_entries and !empty($date_entries)){
        $used_times = $wpdb->get_col("SELECT meta_value FROM $frmdb->entry_metas it LEFT JOIN $frmdb->fields fi ON (it.field_id = fi.id) WHERE fi.field_key='$time_key' and it.item_id in (". implode(',', $date_entries).")");

        if($used_times and !empty($used_times)){
            $number_allowed = apply_filters('frm_allowed_time_count', 1, $time_key, $date_key);
            $count = array();
            foreach($used_times as $used){
                if(!isset($opts[$used]))
                    continue;

                if(!isset($count[$used]))
                    $count[$used] = 0;
                $count[$used]++;

                if((int)$count[$used] >= $number_allowed)
                    unset($opts[$used]);
            }
            unset($count);
        }
    }

    echo json_encode($opts);
    die();
}    

0 个答案:

没有答案