From 3470498cc6542f13238a1784a359f5bee4dbb678 Mon Sep 17 00:00:00 2001 From: Kuntyi Date: Fri, 9 Oct 2015 15:59:56 +0300 Subject: [PATCH 1/1] Fixed multiple select fields --- core/misc/states.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/core/misc/states.js b/core/misc/states.js index a0eb648..fe06092 100644 --- a/core/misc/states.js +++ b/core/misc/states.js @@ -96,6 +96,22 @@ RegExp: function (reference, value) { return reference.test(value); }, + 'Array': function (reference, value) { + var operator = jQuery.grep(reference, function( a ) { + return jQuery.isArray(a); + }); + if (operator.length === 0) { + operator = ['and']; + } + reference = jQuery.grep(reference, function( a ) { + return jQuery.type(a) != 'array'; + }); + + if (jQuery.isArray(value) == false) { + return false; + } + return states.Dependent.operator[operator](reference, value); + }, Function: function (reference, value) { // The "reference" variable is a comparison function. return reference(value); @@ -110,6 +126,33 @@ } }; + states.Dependent.operator = { + or: function(reference, value) { + var i = 0; + while (reference[i]) { + if (reference[i] == value) return true; + i++; + } + for (var key in reference) { + return (reference.hasOwnProperty(key) && value.indexOf(reference[key]) === -1) ? false : true; + } + return false; + }, + xor: function(reference, value) { + var i = 0; + while (reference[i]) { + if (reference[i] == value) return true; + i++; + } + return false; + }, + and: function(reference, value) { + for (var key in reference) { + return ((reference.hasOwnProperty(key) && value.indexOf(reference[key]) === -1) || (reference.length != value.length)) ? false : true; + } + }, + }; + states.Dependent.prototype = { /** -- 1.9.5.msysgit.1