68 lines
1.3 KiB
JavaScript
68 lines
1.3 KiB
JavaScript
(function($, undefined){
|
|
|
|
var Field = acf.Field.extend({
|
|
|
|
type: 'radio',
|
|
|
|
events: {
|
|
'click input[type="radio"]': 'onClick',
|
|
},
|
|
|
|
$control: function(){
|
|
return this.$('.acf-radio-list');
|
|
},
|
|
|
|
$input: function(){
|
|
return this.$('input:checked');
|
|
},
|
|
|
|
$inputText: function(){
|
|
return this.$('input[type="text"]');
|
|
},
|
|
|
|
getValue: function(){
|
|
var val = this.$input().val();
|
|
if( val === 'other' && this.get('other_choice') ) {
|
|
val = this.$inputText().val();
|
|
}
|
|
return val;
|
|
},
|
|
|
|
onClick: function( e, $el ){
|
|
|
|
// vars
|
|
var $label = $el.parent('label');
|
|
var selected = $label.hasClass('selected');
|
|
var val = $el.val();
|
|
|
|
// remove previous selected
|
|
this.$('.selected').removeClass('selected');
|
|
|
|
// add active class
|
|
$label.addClass('selected');
|
|
|
|
// allow null
|
|
if( this.get('allow_null') && selected ) {
|
|
$label.removeClass('selected');
|
|
$el.prop('checked', false).trigger('change');
|
|
val = false;
|
|
}
|
|
|
|
// other
|
|
if( this.get('other_choice') ) {
|
|
|
|
// enable
|
|
if( val === 'other' ) {
|
|
this.$inputText().prop('disabled', false);
|
|
|
|
// disable
|
|
} else {
|
|
this.$inputText().prop('disabled', true);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
acf.registerFieldType( Field );
|
|
|
|
})(jQuery); |