Files
ultimatemember/assets/js/um-conditional.min.js
T
2018-03-12 20:56:57 +08:00

1 line
7.2 KiB
JavaScript

jQuery(document).ready(function(){function e(e){var i="",t=n(e);switch(t){case"text":case"number":case"date":case"textarea":case"select":i=e.find("input:text,input[type=number],textarea,select").val();break;case"multiselect":i=e.find("select").val();break;case"radio":e.find("input[type=radio]:checked").length>=1&&(i=e.find("input[type=radio]:checked").val());break;case"checkbox":e.find("input[type=checkbox]:checked").length>=1&&(e.find("input[type=checkbox]:checked").length>1?e.find("input[type=checkbox]:checked").each(function(){i=i+jQuery(this).val()+" "}):i=e.find("input[type=checkbox]:checked").val())}return{type:t,value:i}}function i(e){var i=n(e);switch(i){case"text":case"number":case"date":case"textarea":case"select":case"multiselect":case"radio":case"checkbox":return e.find("input,textarea,select")}return""}function n(e){var i="",n=e.attr("class");return jQuery.each(n.split(" "),function(e,n){n.indexOf("um-field-type")!=-1&&(i=n.split("_")[1])}),i}function t(e){var i=[];return jQuery.each(h,function(n,t){t.field.parent==e&&i.push(t.field.condition)}),i}function a(e){return um_live_field=e.parents(".um-field").data("key"),um_live_value=e.val(),e.is(":checkbox")&&(um_live_value="",e.parents(".um-field").find("input:checked").length>1?e.parents(".um-field").find("input:checked").each(function(){um_live_value=um_live_value+jQuery(this).val()+" "}):e.parents(".um-field").find("input:checked").length>=1&&(um_live_value=e.parents(".um-field").find("input:checked").val())),e.is(":radio")&&(um_live_value=e.parents(".um-field").find("input[type=radio]:checked").val()),um_live_value}function c(e,i,n){var t,a=!1,n=!!n;for(t in i)if(n&&i[t]===e||!n&&i[t]==e){a=!0;break}return a}function r(e,i){var t=e.parents(".um-field[data-key]").data("key"),r=p[t],o=a(e),d={},s={},l={};jQuery.each(r,function(e,i){"undefined"==typeof s[i.owner]&&(s[i.owner]=[],l[i.owner]={}),s[i.owner].push(i.value),l[i.owner]=i}),jQuery.each(r,function(i,t){"undefined"==typeof d[t.owner]&&(d[t.owner]={}),"empty"==t.operator&&(!o||""==o&&c(o,s[t.owner])?d[t.owner][i]=!0:d[t.owner][i]=!1),"not empty"==t.operator&&(o&&""!=o&&!c(o,s[t.owner])?d[t.owner][i]=!0:d[t.owner][i]=!1),"equals to"==t.operator&&(t.value==o&&c(o,s[t.owner])?d[t.owner][i]=!0:d[t.owner][i]=!1),"not equals"==t.operator&&(jQuery.isNumeric(t.value)&&parseInt(o)!=parseInt(t.value)&&o&&!c(o,s[t.owner])?d[t.owner][i]=!0:t.value==o||c(o,s[t.owner])?d[t.owner][i]=!1:d[t.owner][i]=!0),"greater than"==t.operator&&(jQuery.isNumeric(t.value)&&parseInt(o)>parseInt(t.value)?d[t.owner][i]=!0:d[t.owner][i]=!1),"less than"==t.operator&&(jQuery.isNumeric(t.value)&&parseInt(o)<parseInt(t.value)?d[t.owner][i]=!0:d[t.owner][i]=!1),"contains"==t.operator&&("multiselect"==n(e.parents(".um-field[data-key]"))?o&&o.indexOf(t.value)>=0&&c(t.value,o)?d[t.owner][i]=!0:d[t.owner][i]=!1:o&&o.indexOf(t.value)>=0&&c(o,s[t.owner])?d[t.owner][i]=!0:d[t.owner][i]=!1)}),jQuery.each(d,function(i,n){c(!0,n)?u(e,l[i],!0):u(e,l[i],!1)}),e.trigger("um_fields_change")}function u(e,i,n){var t=jQuery('div.um-field[data-key="'+i.owner+'"]');"show"==i.action&&n&&(t.show(),l(t),o(t)),"show"!=i.action||n||(t.hide(),s(t)),"hide"==i.action&&n&&(t.hide(),s(t)),"hide"!=i.action||n||(t.show(),l(t),o(t)),e.removeClass("um-field-has-changed")}function o(e){var t=n(e),a=e.data("key"),c=v[a];switch(t){case"text":case"number":case"date":case"textarea":e.find("input:text,input[type=number],textarea,select").val(c.value);break;case"select":e.find("select").find("option").prop("selected",!1),e.find("select").val(c.value),e.find("select").trigger("change");break;case"multiselect":e.find("select").find("option").prop("selected",!1),jQuery.each(c.value,function(i,n){e.find("select").find('option[value="'+n+'"]').attr("selected",!0)}),e.find("select").trigger("change");break;case"checkbox":if(e.find("input[type=checkbox]:checked").length>=1)if(e.find("input[type=checkbox]:checked").removeAttr("checked"),e.find("span.um-field-checkbox-state i").removeClass("um-icon-android-checkbox-outline"),e.find("span.um-field-checkbox-state i").addClass("um-icon-android-checkbox-outline-blank"),e.find(".um-field-checkbox.active").removeClass("active"),jQuery.isArray(c.value))jQuery.each(c.value,function(i,n){var t=e.find('input[type=checkbox][value="'+n+'"]');t.attr("checked",!0),t.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),t.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),t.closest(".um-field-checkbox").addClass("active")});else{var r=e.find('input[type=checkbox][value="'+c.value+'"]');r.attr("checked",!0),r.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),r.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),r.closest(".um-field-checkbox").addClass("active")}break;case"radio":e.find("input[type=radio]:checked").length>=1&&setTimeout(function(){e.find("input[type=radio]:checked").removeAttr("checked"),e.find("span.um-field-radio-state i").removeClass("um-icon-android-radio-button-on"),e.find("span.um-field-radio-state i").addClass("um-icon-android-radio-button-off"),e.find(".um-field-radio.active").removeClass("active");var i=e.find("input[type=radio][value='"+c.value+"']");i.attr("checked",!0),i.closest(".um-field-radio").find("i").removeClass("um-icon-android-radio-button-off"),i.closest(".um-field-radio").find("i").addClass("um-icon-android-radio-button-on"),i.closest(".um-field-radio").addClass("active")},100)}if(!e.hasClass("um-field-has-changed")){var u=i(e);"radio"!=t&&"checkbox"!=t||(u=u.find(":checked")),u&&(u.trigger("change"),e.addClass("um-field-has-changed"))}}function d(){jQuery.each(p,function(e,i){(jQuery('.um-field[data-key="'+e+'"]:hidden').length>=1||"none"==jQuery('.um-field[data-key="'+e+'"]').css("display"))&&jQuery.each(i,function(e,i){jQuery('.um-field[data-key="'+i.owner+'"]').hide()})})}function s(e){"undefined"!=typeof jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"hidden"})}function l(e){"undefined"!=typeof jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"visible"})}function f(){var n=[];jQuery(".um-field[data-key]").each(function(){var i=jQuery(this).data("key");n.push(i);var t={};jQuery.each(jQuery(this)[0].attributes,function(e,i){if(i.name.indexOf("data-cond")!=-1){var n=i.name.slice(10),a=n.substring(1,0),c=n.slice(2);"undefined"==typeof t[a]&&(t[a]={}),t[a][c]=i.value}}),jQuery.each(t,function(e,n){var t={field:{owner:i,action:n.action,parent:n.field,operator:n.operator,value:n.value,condition:{owner:i,action:n.action,operator:n.operator,value:n.value}}};h.push(t)}),v[jQuery(this).data("key")]=e(jQuery(this))}),jQuery.each(n,function(e,i){p[i]=t(i)}),jQuery(".um-field[data-key]:visible").each(function(){var e=jQuery(this),n=i(e);"undefined"!=typeof n.trigger&&n.trigger("change")})}var h=[],p={},v={};jQuery(document).on("change",".um-field select, .um-field input[type=radio], .um-field input[type=checkbox]",function(){var e=jQuery(this);r(e,!1)}),jQuery(document).on("input change",".um-field input[type=text]",function(){var e=jQuery(this);r(e,!1)}),jQuery(document).on("input change",".um-field input[type=password]",function(){var e=jQuery(this);r(e,!1)}),jQuery(document).on("um_fields_change",function(){d(),d()}),f()});