Files
littleTiger/public/static/js/timePicker.js
2019-02-28 19:48:21 +08:00

167 lines
4.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @author Hunter
*
* var timePicker = new HunterTimePicker({
* target: '#targetID', 目标元素ID文本框该值为选择的时间
* callback: function(value){ 回调函数选择城市后调用Time_id为选择的城市的ID
* alert(value);
* }
* });
*
* timePicker.init();
*/
var HunterTimePicker = function(options){
this.template = $('<div class="Hunter-time-picker" id="Hunter_time_picker"><div class="Hunter-wrap"><ul class="Hunter-wrap" id="Hunter_time_wrap"></ul></div></div>');
this.time_wrap = $('#Hunter_time_wrap', this.template);
this.settings = {
"target": $(options.target),
"callback": options.callback || '',
};
};
var dates = {
hour: ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'],
minute: ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55'],
};
HunterTimePicker.prototype = {
init: function(){
var that = this;
$(window).click(function(event) {
that.template.remove();
});
that.targetEvent();
},
buildTimePicker: function(){
var that = this;
that.buildHourTpl();
that.hourEvent();
that.minuteEvent();
that.cleanBtnEvent();
},
buildHourTpl: function(){
var that = this;
var hour_html = '<p>小时</p>';
for(var i = 0; i < dates.hour.length; i++){
var temp = that.settings.target.val().split(":")[0];
if(dates.hour[i]==temp){
hour_html += '<li class="Hunter-hour active" data-hour="' + dates.hour[i] +'"><ul class="Hunter-minute-wrap"></ul><div class="Hunter-hour-name">' + dates.hour[i] + '</div></li>';
}else{
hour_html += '<li class="Hunter-hour" data-hour="' + dates.hour[i] +'"><ul class="Hunter-minute-wrap"></ul><div class="Hunter-hour-name">' + dates.hour[i] + '</div></li>';
}
}
hour_html += '<li class="Hunter-clean"><input type="button" class="Hunter-clean-btn" id="Hunter_clean_btn" value="清 空"></li>'
that.time_wrap.html(hour_html);
},
buildMinuteTpl: function(cur_time){
var that = this;
var poi = cur_time.position();
var minute_html = '<p>分钟</p>';
var temp = that.settings.target.val().split(":")[1];
for(var j = 0; j < dates.minute.length;j++){
if(dates.minute[j]==temp){
minute_html += '<li class="Hunter-minute active" data-minute="' + dates.minute[j] + '">' + dates.minute[j] + '</li>';
}else{
minute_html += '<li class="Hunter-minute" data-minute="' + dates.minute[j] + '">' + dates.minute[j] + '</li>';
}
}
cur_time.find('.Hunter-minute-wrap').html(minute_html).css('left', '-' + (poi.left - 37) + 'px').show();
},
hourEvent: function(){
var that = this;
that.time_wrap.on('click', '.Hunter-hour', function(event){
event.preventDefault();
event.stopPropagation();
var _this = $(this);
that.time_wrap.find('.Hunter-hour').removeClass('active');
that.time_wrap.find('.Hunter-hour-name').removeClass('active');
that.time_wrap.find('.Hunter-minute-wrap').hide().children().remove();
_this.addClass('active');
_this.find('.Hunter-hour').addClass('active');
var hourValue = _this.data('hour');
var temp = that.settings.target.val().split(":");
if(temp.length > 1){
that.settings.target.val(hourValue+":"+temp[1]);
}else{
that.settings.target.val(hourValue+":00");
}
that.buildMinuteTpl(_this);
return false;
});
},
minuteEvent: function(){
var that = this;
that.time_wrap.on('click', '.Hunter-minute', function(event) {
event.preventDefault();
event.stopPropagation();
/* Act on the event */
var _this = $(this);
var minuteValue = _this.data('minute');
var temp = that.settings.target.val().split(":")[0]+":"+minuteValue;
that.settings.target.val(temp);
that.template.remove();
if(that.settings.callback) that.settings.callback(temp);
return false;
});
},
cleanBtnEvent: function(){
var that = this;
that.time_wrap.on('click', '#Hunter_clean_btn', function(event){
event.preventDefault();
event.stopPropagation();
/* Act on the event */
that.settings.target.val('');
that.template.remove();
if(that.settings.callback) that.settings.callback(0);
return false;
});
},
targetEvent: function(){
var that = this;
that.settings.target.click(function(event){
event.stopPropagation();
that.template.remove();
var _this = $(this);
that.buildTimePicker();
var offset = _this.offset();
var top = offset.top + _this.outerHeight() + 15;
that.template.css({
'left': offset.left,
'top': top
});
$('body').append(that.template);
return false;
});
}
};