Fix input trigger on source field types with multiple selected values (#3798)

Credit to @jimcottrell. Tested by https://github.com/octoberrain/test-plugin/pull/55
This commit is contained in:
Jim Cottrell 2018-09-18 22:54:57 -06:00 committed by Luke Towers
parent 9d126a0ab6
commit 6f2ed028b3
2 changed files with 19 additions and 8 deletions

View File

@ -57,7 +57,7 @@
this.updateTarget(!$(this.options.trigger + ':checked', this.triggerParent).length) this.updateTarget(!$(this.options.trigger + ':checked', this.triggerParent).length)
} }
else if (this.triggerCondition == 'value') { else if (this.triggerCondition == 'value') {
var trigger, triggerValue = '' var trigger, triggered = false
trigger = $(this.options.trigger, this.triggerParent) trigger = $(this.options.trigger, this.triggerParent)
.not('input[type=checkbox], input[type=radio], input[type=button], input[type=submit]') .not('input[type=checkbox], input[type=radio], input[type=button], input[type=submit]')
@ -67,11 +67,19 @@
.not(':not(input[type=checkbox]:checked, input[type=radio]:checked)') .not(':not(input[type=checkbox]:checked, input[type=radio]:checked)')
} }
if (!!trigger.length) { var self = this
triggerValue = trigger.val() trigger.each(function() {
} var triggerValue = $(this).val();
this.updateTarget($.inArray(triggerValue, this.triggerConditionValue) != -1) $.each($.isArray(triggerValue) ? triggerValue : [triggerValue], function(key, val) {
triggered = $.inArray(val, self.triggerConditionValue) != -1
return !triggered
})
return !triggered
})
this.updateTarget(triggered)
} }
} }

View File

@ -4170,11 +4170,14 @@ self.onConditionChanged()})
self.onConditionChanged()} self.onConditionChanged()}
TriggerOn.prototype.onConditionChanged=function(){if(this.triggerCondition=='checked'){this.updateTarget(!!$(this.options.trigger+':checked',this.triggerParent).length)} TriggerOn.prototype.onConditionChanged=function(){if(this.triggerCondition=='checked'){this.updateTarget(!!$(this.options.trigger+':checked',this.triggerParent).length)}
else if(this.triggerCondition=='unchecked'){this.updateTarget(!$(this.options.trigger+':checked',this.triggerParent).length)} else if(this.triggerCondition=='unchecked'){this.updateTarget(!$(this.options.trigger+':checked',this.triggerParent).length)}
else if(this.triggerCondition=='value'){var trigger,triggerValue='' else if(this.triggerCondition=='value'){var trigger,triggered=false
trigger=$(this.options.trigger,this.triggerParent).not('input[type=checkbox], input[type=radio], input[type=button], input[type=submit]') trigger=$(this.options.trigger,this.triggerParent).not('input[type=checkbox], input[type=radio], input[type=button], input[type=submit]')
if(!trigger.length){trigger=$(this.options.trigger,this.triggerParent).not(':not(input[type=checkbox]:checked, input[type=radio]:checked)')} if(!trigger.length){trigger=$(this.options.trigger,this.triggerParent).not(':not(input[type=checkbox]:checked, input[type=radio]:checked)')}
if(!!trigger.length){triggerValue=trigger.val()} var self=this
this.updateTarget($.inArray(triggerValue,this.triggerConditionValue)!=-1)}} trigger.each(function(){var triggerValue=$(this).val();$.each($.isArray(triggerValue)?triggerValue:[triggerValue],function(key,val){triggered=$.inArray(val,self.triggerConditionValue)!=-1
return!triggered})
return!triggered})
this.updateTarget(triggered)}}
TriggerOn.prototype.updateTarget=function(status){var self=this,actions=this.options.triggerAction.split('|') TriggerOn.prototype.updateTarget=function(status){var self=this,actions=this.options.triggerAction.split('|')
$.each(actions,function(index,action){self.updateTargetAction(action,status)}) $.each(actions,function(index,action){self.updateTargetAction(action,status)})
$(window).trigger('resize') $(window).trigger('resize')