mirror of https://github.com/avecms/AVE.cms.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
4.4 KiB
140 lines
4.4 KiB
(function($){ |
|
var defaultOptions = {preloadImg:true}; |
|
|
|
/*************************** |
|
Labels |
|
***************************/ |
|
var jqTransformGetLabel = function(objfield){ |
|
var selfForm = $(objfield.get(0).form); |
|
var oLabel = objfield.next(); |
|
if(!oLabel.is('label')) { |
|
oLabel = objfield.prev(); |
|
if(oLabel.is('label')){ |
|
var inputname = objfield.attr('id'); |
|
if(inputname){ |
|
oLabel = selfForm.find('label[for="'+inputname+'"]'); |
|
} |
|
} |
|
} |
|
if(oLabel.is('label')){return oLabel.css('cursor','pointer');} |
|
return false; |
|
}; |
|
|
|
/* Check for an external click */ |
|
var jqTransformCheckExternalClick = function(event) { |
|
if ($(event.target).parents('.jqTransformSelectWrapper').length === 0) { jqTransformHideSelect($(event.target)); } |
|
}; |
|
|
|
/* Apply document listener */ |
|
var jqTransformAddDocumentListener = function (){ |
|
$(document).on('mousedown', jqTransformCheckExternalClick); |
|
}; |
|
|
|
/* Add a new handler for the reset action */ |
|
var jqTransformReset = function(f){ |
|
$('a.jqTransformCheckbox, a.jqTransformRadio', f).removeClass('jqTransformChecked'); |
|
$('input:checkbox, input:radio', f).each(function(){if(this.checked){$('a', $(this).parent()).addClass('jqTransformChecked');}}); |
|
}; |
|
|
|
/*************************** |
|
Check Boxes |
|
***************************/ |
|
$.fn.jqTransCheckBox = function(){ |
|
return this.each(function(){ |
|
if($(this).hasClass('jqTransformHidden')) {return;} |
|
|
|
var $input = $(this); |
|
|
|
//set the click on the label |
|
var oLabel = jqTransformGetLabel($input); |
|
oLabel && oLabel.click(function(){aLink.trigger('click');}); |
|
|
|
if($input.attr('title') && $input.attr('class')){ |
|
var aLink = $('<a href="#" title="'+$input.attr('title')+'" class="jqTransformCheckbox '+$input.attr('class')+'"></a>'); |
|
}else{ |
|
var aLink = $('<a href="#" class="jqTransformCheckbox"></a>'); |
|
} |
|
|
|
//wrap and add the link |
|
|
|
if($input.hasClass('float')){ |
|
$input.addClass('jqTransformHidden').wrap('<span class="jqTransformCheckboxWrapperFloat"></span>').parent().prepend(aLink); |
|
}else{ |
|
$input.addClass('jqTransformHidden').wrap('<span class="jqTransformCheckboxWrapper"></span>').parent().prepend(aLink); |
|
}; |
|
|
|
if($input.attr('disabled')){aLink.addClass('jqTransformCheckedDisable')}; |
|
if($input.attr('disabled') && $input.attr('checked')){aLink.addClass('jqTransformCheckedDisableCheck')}; |
|
|
|
//on change, change the class of the link |
|
$input.change(function(){ |
|
this.checked && aLink.addClass('jqTransformChecked') || aLink.removeClass('jqTransformChecked'); |
|
return true; |
|
}); |
|
|
|
// Click Handler, trigger the click and change event on the input |
|
aLink.on('click', function(){ |
|
//do nothing if the original input is disabled |
|
if($input.attr('disabled')){return false;} |
|
//trigger the envents on the input object |
|
$input.trigger('click').trigger("change"); |
|
return false; |
|
}); |
|
|
|
// set the default state |
|
this.checked && aLink.addClass('jqTransformChecked'); |
|
}); |
|
}; |
|
|
|
/*************************** |
|
Radio Buttons |
|
***************************/ |
|
$.fn.jqTransRadio = function(){ |
|
return this.each(function(){ |
|
if($(this).hasClass('jqTransformHidden')) {return;} |
|
|
|
var $input = $(this); |
|
var inputSelf = this; |
|
|
|
oLabel = jqTransformGetLabel($input); |
|
oLabel && oLabel.click(function(){aLink.trigger('click');}); |
|
|
|
var aLink = $('<a href="#" class="jqTransformRadio" rel="'+ this.name +'"></a>'); |
|
$input.addClass('jqTransformHidden').wrap('<span class="jqTransformRadioWrapper"></span>').parent().prepend(aLink); |
|
|
|
$input.change(function(){ |
|
inputSelf.checked && aLink.addClass('jqTransformChecked') || aLink.removeClass('jqTransformChecked'); |
|
return true; |
|
}); |
|
|
|
// Click Handler |
|
aLink.on('click', function(){ |
|
if($input.attr('disabled')){return false;} |
|
$input.trigger('click').trigger('change'); |
|
|
|
// uncheck all others of same name input radio elements |
|
$('input[name="'+$input.attr('name')+'"]',inputSelf.form).not($input).each(function(){ |
|
$(this).attr('type')=='radio' && $(this).trigger('change'); |
|
}); |
|
|
|
return false; |
|
}); |
|
// set the default state |
|
inputSelf.checked && aLink.addClass('jqTransformChecked'); |
|
}); |
|
}; |
|
|
|
$.fn.jqTransform = function(options){ |
|
var opt = $.extend({},defaultOptions,options); |
|
|
|
/* each form */ |
|
return this.each(function(){ |
|
|
|
$('input:checkbox', this).jqTransCheckBox(); |
|
$('input:radio', this).jqTransRadio(); |
|
|
|
}); /* End Form each */ |
|
|
|
};/* End the Plugin */ |
|
|
|
})(jQuery); |