Jquery

De Raccourcis


serializeAll : prendre aussi en compte les champs désactivés

Permet de récupérer même les champs désactivés, ce qui peut être intéressant dans certains cas où l'on souhaite tout de même récupérer ces champs là.

// sérialisation des champs désactivés
$.fn.serializeDisabled = function() {
	var obj = {};
	$(this).find(':input:disabled:not(:radio,:checkbox), :radio:checked:disabled, :checkbox:checked:disabled').each(function() {
		var $this = $(this);
		obj[$this.attr("name")] = $this.val();
	});
	return $.param(obj);
};
// sérialisation des champs activés et désactivés
$.fn.serializeAll = function() {
	return this.serialize() + '&' + this.serializeDisabled();
};

checkboxTous : Cocher tout

Permet de cocher une liste de checkbox qui porte le même nom. Le paramètre « visible » détermine si seul le champs visible doivent être prise en compte ou non. Celui qui sélection ou dé-sélection la liste dois être avec le même « name » que les autres avec la classe « checkboxTous ».

var checkoxTousChange = function(element, change, visible) {
	var $t = $(element);
	var name= $t.attr('name');
	var cible = "[name="+name+"]"+ ((visible == true) ? ":visible" : "");
 
	if ($t.hasClass("checkboxTous") && change ) {
		var checked = $t.is(":checked");
		$(cible+":not(.checkboxTous)" + (checked? ":not(:checked)" : ":checked" ) ).click();
	} else {
		$("[name="+name+"].checkboxTous").attr("checked",
			$(cible+":not(.checkboxTous)").size() == $(cible+":not(.checkboxTous):checked").size()
        	);
    }
};
 
$.fn.checkboxTous = function(visible) {this.each(function() {
	var $t = $(this);
	var name= $t.attr('name');
	$("[name="+name+"]").change(function() {
		checkoxTousChange(this, true, visible);
	});
	checkoxTousChange (this, false, visible);
})};

onActive  : Active/désactiver avec une case à cocher

Activer ou non un ou plusieurs champs avec une checkbox. Le « partern » permet de définir les éléments ciblé par le changement. « Invert » est un booléen qui permet d'inverser le comportement.

var actionOnAction = function (e, partern, invert) {
	$(partern).attr("disabled", !invert && e.is(":checked") || invert && !e.is(":checked"));
}
 
$.fn.onActive = function(partern, invert) {this.each(function() {
	invert = (invert == true);
	var e = $(this);
	actionOnAction(e, partern, invert);
	e.change(function () {
		actionOnAction(e, partern, invert);
	});
})};

onParentDisplay : désactive les enfants en cascade

var parentNodeToggle = function(cible, sourceCheck, element, start) {
	if (sourceCheck.is(":checked")) {
		parentNodeCompteur(cible, 1, element, start);
	} else {
		parentNodeCompteur(cible, start ? 0 : -1, element, start);
	}
};
 
var parentNodeCompteur = function(cible, add, element, start) {
	cible.each(function() {
		var $t = $(this);
		var $e = $t.find(element);
		var cmpt = $t.data('compt');
		$t.data('compt', (cmpt + add > 0) ? (cmpt + add) : (add <= 0 ? 0 : add));
		if ($t.data('compt') != "0") {
			if (!start && $t.is(":hidden")) {
				$t.show();
				$e.change();
			}
		} else {
			$t.hide();
			if (!start && $e.attr('checked')) {
				$e.click();
			}
		}
 
	});
};
 
$.fn.parentNodeDisplay = function(element) {
	this.each(function() {
 
		var $t = $(this);
		var $e = $t.find(element);
		var $c = $("." + $t.attr('id'));
 
		$e.change(function() {
			parentNodeToggle($c, $e, element, false);
			return false;
		});
		parentNodeToggle($c, $e, element, true);
 
	})
};