$(function () { var router = new Router({ container: '#container', enterTimeout: 250, leaveTimeout: 250 }); // grid var home = { url: '/', className: 'home', render: function () { return $('#tpl_home').html(); } }; // button var button = { url: '/button', className: 'button', render: function () { return $('#tpl_button').html(); } }; // cell var cell = { url: '/cell', className: 'cell', render: function () { return $('#tpl_cell').html(); }, bind: function (){ $('.container').on('click', '#showTooltips', function (){ $('.js_tooltips').show(); setTimeout(function (){ $('.js_tooltips').hide(); }, 3000); }); } }; // toast var toast = { url: '/toast', className: 'toast', render: function () { return $('#tpl_toast').html(); }, bind: function () { $('#container').on('click', '#showToast', function () { $('#toast').show(); setTimeout(function () { $('#toast').hide(); }, 2000); }).on('click', '#showLoadingToast', function () { $('#loadingToast').show(); setTimeout(function () { $('#loadingToast').hide(); }, 2000); }); } }; // dialog var dialog = { url: '/dialog', className: 'dialog', render: function () { return $('#tpl_dialog').html(); }, bind: function () { $('#container').on('click', '#showDialog1', function () { $('#dialog1').show().on('click', '.weui_btn_dialog', function () { $('#dialog1').off('click').hide(); }); }).on('click', '#showDialog2', function () { $('#dialog2').show().on('click', '.weui_btn_dialog', function () { $('#dialog2').off('click').hide(); }); }); } }; // progress var progress = { url: '/progress', className: 'progress', render: function () { return $('#tpl_progress').html(); }, bind: function () { $('#container').on('click', '#btnStartProgress', function () { if ($(this).hasClass('weui_btn_disabled')) { return; } $(this).addClass('weui_btn_disabled'); var progress = 0; var $progress = $('.js_progress'); function next() { $progress.css({width: progress + '%'}); progress = ++progress % 100; setTimeout(next, 30); } next(); }); } }; // msg var msg = { url: '/msg', className: 'msg', render: function () { return $('#tpl_msg').html(); } }; // article var article = { url: '/article', className: 'article', render: function () { return $('#tpl_article').html(); } }; // actionsheet var actionsheet = { url: '/actionsheet', className: 'actionsheet', render: function () { return $('#tpl_actionsheet').html(); }, bind: function () { $('#container').on('click', '#showActionSheet', function () { var mask = $('#mask'); var weuiActionsheet = $('#weui_actionsheet'); weuiActionsheet.addClass('weui_actionsheet_toggle'); mask.show() .focus()//加focus是为了触发一次页面的重排(reflow or layout thrashing),使mask的transition动画得以正常触发 .addClass('weui_fade_toggle').one('click', function () { hideActionSheet(weuiActionsheet, mask); }); $('#actionsheet_cancel').one('click', function () { hideActionSheet(weuiActionsheet, mask); }); mask.unbind('transitionend').unbind('webkitTransitionEnd'); function hideActionSheet(weuiActionsheet, mask) { weuiActionsheet.removeClass('weui_actionsheet_toggle'); mask.removeClass('weui_fade_toggle'); mask.on('transitionend', function () { mask.hide(); }).on('webkitTransitionEnd', function () { mask.hide(); }) } }); } }; // icons var icons = { url: '/icons', className: 'icons', render: function () { return $('#tpl_icons').html(); } }; // panel var panel = { url: '/panel', className: 'panel', render: function () { return $('#tpl_panel').html(); } }; // tab var tab = { url: '/tab', className: 'tab', render: function () { return $('#tpl_tab').html(); } }; // navbar var navbar = { url: '/navbar', className: 'navbar', render: function () { return $('#tpl_navbar').html(); }, bind: function () { $('#container').on('click', '.weui_navbar_item', function () { $(this).addClass('weui_bar_item_on').siblings('.weui_bar_item_on').removeClass('weui_bar_item_on'); }); } }; // tabbar var tabbar = { url: '/tabbar', className: 'tabbar', render: function () { return $('#tpl_tabbar').html(); }, bind: function () { $('#container').on('click', '.weui_tabbar_item', function () { $(this).addClass('weui_bar_item_on').siblings('.weui_bar_item_on').removeClass('weui_bar_item_on'); }); } }; // searchbar var searchbar = { url: '/searchbar', className: 'searchbar', render: function () { return $('#tpl_searchbar').html(); }, bind: function () { $('#container').on('focus', '#search_input', function () { var $weuiSearchBar = $('#search_bar'); $weuiSearchBar.addClass('weui_search_focusing'); }).on('blur', '#search_input', function () { var $weuiSearchBar = $('#search_bar'); $weuiSearchBar.removeClass('weui_search_focusing'); if ($(this).val()) { $('#search_text').hide(); } else { $('#search_text').show(); } }).on('input', '#search_input', function () { var $searchShow = $("#search_show"); if ($(this).val()) { $searchShow.show(); } else { $searchShow.hide(); } }).on('touchend', '#search_cancel', function () { $("#search_show").hide(); $('#search_input').val(''); }).on('touchend', '#search_clear', function () { $("#search_show").hide(); $('#search_input').val(''); }); } }; router.push(home) .push(button) .push(cell) .push(toast) .push(dialog) .push(progress) .push(msg) .push(article) .push(actionsheet) .push(icons) .push(panel) .push(tab) .push(navbar) .push(tabbar) .push(searchbar) .setDefault('/') .init(); // .container 设置了 overflow 属性, 导致 Android 手机下输入框获取焦点时, 输入法挡住输入框的 bug // 相关 issue: https://github.com/weui/weui/issues/15 // 解决方法: // 0. .container 去掉 overflow 属性, 但此 demo 下会引发别的问题 // 1. 参考 http://stackoverflow.com/questions/23757345/android-does-not-correctly-scroll-on-input-focus-if-not-body-element // Android 手机下, input 或 textarea 元素聚焦时, 主动滚一把 if (/Android/gi.test(navigator.userAgent)) { window.addEventListener('resize', function () { if (document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA') { window.setTimeout(function () { document.activeElement.scrollIntoViewIfNeeded(); }, 0); } }) } });