/**
* Created by ZhangYE on 2016/4/21.
* 表单元素组合初始化
*/
$m = {};
$m.Select = function(){
//页面中的Select遍历初始化
/* var selCreate = function(obj){
if(!obj){
obj = $('body');
}
obj.find('select').each(function(){
$(this).next('.m-select').remove();
var _selStyle = $(this).attr('class'),
_selWidth = $(this).css('width');
var _selTitle = $(this).find("option:selected").text();
var _selTitleHTML = '
' +
''+_selTitle+'' +
'' +
'
';
if(_selStyle==null){
_selStyle = '';
}
var _selListHTML = '';
$(this).children().each(function(){
var _tagType = $(this).get(0).tagName;//标签类型(option/optgroup)
//option类型转为普通li
if(_tagType == 'OPTION'){
var _SelTrue = '';
var _OptName = $(this).text(),//选项名
_OptVal = $(this).val();//选项值
if($(this).prop('selected')==true){
_SelTrue = 'active';
}
_selListHTML += ''+_OptName+'';
}
if(_tagType == 'OPTGROUP'){
var _GroupName = $(this).attr('label');//组名
_selListHTML += ''+_GroupName+'';
}
});
_selListHTML = '';
var selHTML = '' +_selTitleHTML + _selListHTML + '
';
$(this).after(selHTML);
$(this).attr('style','position:absolute;z-index:-1;clip: rect(0px, 0px, 0px, 0px);');
});
};*/
//Select点击选中
var selClick = function(){
$('body').on('click','.sel-list>ul>li:not(.sel-group)',function(){
$(this).addClass('active').siblings('li').removeClass('active');
var _selDom = $(this).parents('.m-select'),
_selText = $(this).text(),
_selVal = $(this).attr('data-index');
_selDom.find('.sel-title span').text(_selText);
_selDom.prev('select').val(_selVal).trigger('click').trigger('change');
});
};
//原生Select赋值后组件同时更新
var selUpdate = function(){
$('body').on('change','select',function(){
var _selDom = $(this).next('.m-select');
if(_selDom.length>0){
var _optVal = $(this).val(),
_optText = $(this).find("option:selected").text();
_selDom.find('.sel-list>ul>li').each(function(){
var _selVal = $(this).attr('data-index'),
_selText = $(this).text();
if((_optVal == _selVal)&&(_optText == _selText)){
$(this).addClass('active').siblings('li').removeClass('active');
_selDom.find('.sel-title span').text(_selText);
_selDom.removeClass('active');
}
});
}
});
};
//Select显示隐藏
var selToggle = function(){
$(document).click(function(e){
var _clkDom = $(e.target);
//点击发生在Select内
if((_clkDom.hasClass('m-select'))||(_clkDom.parents('.m-select').length>0)){
var _bSlide = _clkDom.parents('.m-select').hasClass('active');
$('.m-select').removeClass('active');
//点击Select标题
if((_clkDom.hasClass('sel-title'))||(_clkDom.parents('.sel-title').length>0)){
if(!_bSlide){
_clkDom.parents('.m-select').addClass('active');
}
}
//点击组别
else if(_clkDom.hasClass('sel-group')){
_clkDom.parents('.m-select').addClass('active');
}
}
else{
$('.m-select').removeClass('active');
}
});
};
return {
init: function(obj) {
selClick();
selUpdate();
selToggle();
},
create : function(obj){
selCreate(obj);
}
}
}();
$m.Switch = function(){
//页面中的Checkbox遍历初始化
var switchCreate = function(obj){
if(!obj){
obj = $('body');
}
obj.find('input[type="checkbox"].switch').each(function(){
$(this).siblings('i').remove();
var _labelDom = $(this).parent('label');//以父级的label进行DOM操作
var _iDom = '';//模拟开关元素
_labelDom.addClass('m-switch');
if($(this).prop('checked')==true){
_labelDom.addClass('active');
}
$(this).after(_iDom);
});
};
var switchToggle = function(){
$('body').on('change','input[type="checkbox"].switch',function(){
var _labelDom = $(this).parent('.m-switch');
if(_labelDom.length>0){
if($(this).prop('checked')==true){
_labelDom.addClass('active');
}
else{
_labelDom.removeClass('active');
}
}
});
};
return {
init: function(obj) {
switchCreate(obj);
switchToggle();
},
create : function(obj){
switchCreate(obj);
}
}
}();
$m.Radio = function(){
//页面中的Radio遍历初始化
var radioCreate = function(obj){
if(!obj){
obj = $('body');
}
obj.find('input[type="radio"]').each(function(){
$(this).siblings('i').remove();
var _labelDom = $(this).parent('label');//以父级的label进行DOM操作
var _iDom = '';//模拟单选框
_labelDom.addClass('m-radio');
if($(this).prop('checked')==true){
_labelDom.addClass('active');
}
if($(this).attr('disabled')=='disabled'){
_labelDom.addClass('disabled');
}
$(this).after(_iDom);
});
};
//Radio点击选中
var radioToggle = function(){
$('body').on('change','input[type="radio"]',function(){
var _radioGroup = $(this).attr('name');
$('input[name="'+_radioGroup+'"]').each(function(){
var _labelDom = $(this).parent('.m-radio');
if(_labelDom.length>0){
if($(this).prop('checked')==true){
_labelDom.addClass('active');
}
else{
_labelDom.removeClass('active');
}
}
});
});
};
return {
init: function(obj) {
radioCreate(obj);
radioToggle();
},
create: function(obj){
radioCreate(obj);
}
}
}();
$m.Checkbox = function(){
//页面中的Checkbox遍历初始化
var checkboxCreate = function(obj){
if(!obj){
obj = $('body');
}
obj.find('input[type="checkbox"]').not('.switch').each(function(){
$(this).siblings('i').remove();
var _labelDom = $(this).parent('label');//以父级的label进行DOM操作
var _iDom = '';//模拟复选框
_labelDom.addClass('m-checkbox');
if($(this).prop('checked')==true){
_labelDom.addClass('active');
}
if($(this).attr('disabled')=='disabled'){
_labelDom.addClass('disabled');
}
$(this).after(_iDom);
});
};
//Checkbox点击选中/取消选中
var checkboxToggle = function(){
$('body').on('change','input[type="checkbox"]:not(.switch)',function(){
var _labelDom = $(this).parent('.m-checkbox');
if(_labelDom.length>0){
if($(this).prop('checked')==true){
_labelDom.addClass('active');
}
else{
_labelDom.removeClass('active');
}
}
});
};
return {
init: function(obj) {
checkboxCreate(obj);
checkboxToggle();
},
create: function(obj){
checkboxCreate(obj);
}
}
}();
$m.InputNum = function(){
//页面中的input-num遍历初始化
var numCreate = function(obj){
if(!obj){
obj = $('body');
}
obj.find('.m-input.input-num').each(function(){
$(this).keyup(function(){
$(this).trigger('change');
});
$(this).change(function(){
var valArr = $(this).val().replace(/[^\d\.-]/g,'').replace(/^\./g,'').replace(/\.{2,}/g,'.').replace('.','$#$').replace(/\./g,'').replace('$#$','.').split(''),
tempVal = '';
$.each(valArr,function(n,value) {
if((value == '-')&&(n!=0)){
}
else{
tempVal += value;
}
});
$(this).val(tempVal);
});
});
};
return {
init: function(obj) {
numCreate(obj);
},
create : function(obj){
numCreate(obj);
}
}
}();
$m.Form = function(){
//表单元素初始化
var FormCreate = function(obj){
$m.Checkbox.create(obj);
$m.Select.create(obj);
$m.Switch.create(obj);
$m.Radio.create(obj);
$m.InputNum.create(obj);
};
var FormInit = function(obj){
$m.Checkbox.init(obj);
$m.Select.init(obj);
$m.Switch.init(obj);
$m.Radio.init(obj);
$m.InputNum.init(obj);
};
//表单重置事件
var FormReset = function(){
//表单重置事件
$('[type="reset"]').click(function(){
var _FormDom = $(this).parents('form');
if(_FormDom.length>0){
_FormDom[0].reset();
_FormDom.find('select').trigger('change');
_FormDom.find('input[type="radio"]').trigger('change');
_FormDom.find('input[type="checkbox"]').trigger('change');
}
});
};
return {
init: function(obj) {
FormInit(obj);
FormReset();
},
create : function(obj){
FormCreate(obj);
}
}
}();