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)
}
else if (this.triggerCondition == 'value') {
var trigger, triggerValue = ''
var trigger, triggered = false
trigger = $(this.options.trigger, this.triggerParent)
.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)')
}
if (!!trigger.length) {
triggerValue = trigger.val()
}
var self = this
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()}
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=='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]')
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()}
this.updateTarget($.inArray(triggerValue,this.triggerConditionValue)!=-1)}}
var self=this
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('|')
$.each(actions,function(index,action){self.updateTargetAction(action,status)})
$(window).trigger('resize')