Light12306/RwTicketAssistantV2/app/air/js/flight/InitCityInput.js

124 lines
3.7 KiB
JavaScript
Raw Normal View History

var initCityInput = function(element, flag) {
//城市列表
var cities = {
'hot': [
'北京', '上海', '广州', '深圳',
'成都', '重庆', '西安', '杭州',
'武汉', '南京', '沈阳', '天津',
'大连', '青岛', '长沙', '昆明',
'长春', '郑州', '海口', '合肥',
'济南', '福州', '哈尔滨', '乌鲁木齐'
]
},
cityListContainer = $('#cityList' + flag),
statisticsValue1 = (flag == 'From' ? '0' : '1'),
listContainer = $('ul.cityContent', cityListContainer);
//点击图标
element.add('#cityOpen' + flag).click(function(event) {
if ($('#flight' + flag).hasClass('errorInput')) {
$('#flight' + flag).removeClass('errorInput').unbind('focus').val('');
}
if (cityListContainer.is(":visible")) {
cityListContainer.hide();
Statistics.trigger(7, statisticsValue1, '1');
} else {
cityListContainer.show();
$('#cityList' + (flag == 'From' ? 'To' : 'From' )).hide();
Statistics.trigger(7, statisticsValue1, '0');
}
event.stopPropagation();
});
$('#cityClose' + flag).click(function(event) {
cityListContainer.hide();
Statistics.trigger(9, statisticsValue1);
event.stopPropagation();
});
//绘制城市列表
listContainer.empty();
for (var i=0; i<cities.hot.length; i++) {
$('<li>').text(cities.hot[i]).appendTo(listContainer);
}
cityListContainer.click(function(event) {
if (event.target.tagName == 'LI') {
var selectedCity = $(event.target).text();
$('#flight' + flag).focus().val(selectedCity);
InputKeeper.keep(flag.toLowerCase(), selectedCity);
cityListContainer.hide();
if ($(event.target).parent().hasClass('cityHistory')) {
Statistics.trigger(39, statisticsValue1, encodeURIComponent(selectedCity));
} else {
Statistics.trigger(8, statisticsValue1, encodeURIComponent(selectedCity));
}
}
});
//点击输入框
element.click(function() {
$(this).select();
});
//自动完成
element.textext({
plugins: 'autocomplete prompt',
autocomplete: {
dropdownMaxHeight : '160px',
render: function(suggestion) {
return '<label class="text-label text-label-left">' + suggestion[0] + '</label>' + ' '
+ '<label class="text-label text-label-right">' + suggestion[1] + '</label>';
}
},
prompt: flag == 'From' ? '出发地' : '目的地',
itemManager: function() {
return {
compareItems: function(item1, item2) {
return item1[0] == item2[0];
},
filter: function(list, query) {
var result = [],
regularQuery = query.replace(/\s/g, '').toLowerCase(),
i = list.length - 1,
dropdownBox = element.siblings('.text-dropdown');
for (; i >= 0; i--) {
if (list[i][0].indexOf(regularQuery) === 0 || list[i][2].indexOf(regularQuery) === 0 || list[i][3].indexOf(regularQuery) === 0) {
result.push(list[i]);
}
}
if (result.length > 4) {
element.siblings('.text-dropdown').getNiceScroll().show().resize();
} else {
element.siblings('.text-dropdown').getNiceScroll().hide();
}
return result;
},
itemToString : function(item) {
Statistics.trigger(38, statisticsValue1, encodeURIComponent(item[0]));
InputKeeper.keep(flag.toLowerCase(), item[0]);
return item[0];
},
init : function(core) {},
stringToItem : function() {}
}
}
}).bind('getSuggestions', function(e, data) {
var textext = $(e.target).textext()[0],
query = (data ? data.query : '') || '';
$('#cityList' + (flag == 'From' ? 'From' : 'To' )).hide();
$(this).trigger(
'setSuggestions',
{result: textext.itemManager().filter(CityMap.PinYin, query)}
);
});
element.siblings('.text-dropdown').niceScroll({cursoropacitymin:0.2,cursoropacitymax:0.4,cursorwidth:'6px'});
};