Jquery

De Raccourcis


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

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[modifier]

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[modifier]

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[modifier]

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);
 
	})
};