In that case, you should centralize the script with a jQuery plugin.
" to all of the array questions where you want the text inputs inserted.
Code:
$(document).on('ready pjax:scriptcomplete',function(){
// Apply the plugin to specific arrays
$('.array-flexible-row.with-array-comments').arrayComments();
});
// A jQuery plugin insert comments into radio arrays
(function( $ ){
$.fn.arrayComments = function(options) {
var opts = $.extend( {
}, options);
return this.each(function() {
// Identify the questions
var thisQuestion = $(this);
var q1ID = $(thisQuestion).attr('id').replace(/question/, '');
var thisQuestion = $('#question'+q1ID);
var nextQuestion = thisQuestion.nextAll('.multiple-short-txt:eq(0)');
var q2ID = $(nextQuestion).attr('id').replace(/question/, '');
//Hide the multiple-short-text
nextQuestion.hide();
// Move the text inputs
$('tr.answers-list', thisQuestion).each(function(i) {
var thisCode = $(this).attr('id').split('X')[2].split(q1ID)[1];
$('td.answer-item:last input[type="radio"]', this).css({
'position': 'absolute',
'left': '-9999em'
});
$('td.answer-item:last', this).removeClass('radio-item').addClass('inserted-text-item').append($('input[type="text"][id$="X'+q2ID+thisCode+'"]', nextQuestion));
});
// Listeners on the text inputs
$('input[type="text"]', thisQuestion).on('keyup change', function(e) {
var thisRadio = $(this).closest('td').find('input[type="radio"]');
var thisRadioVal = thisRadio.val();
if($.trim($(this).val()) != '') {
$(thisRadio).trigger('click');
}
else {
$(thisRadio).prop('checked', false);
thisRadioVal = '';
}
// Reset Expression manager
checkconditions(thisRadioVal, $(thisRadio).attr('name'), 'radio', 'click');
});
// Listeners on the radios
$('input[type="radio"]', thisQuestion).on('click', function(e) {
if(!$(this).closest('td').hasClass('inserted-text-item')) {
$(this).closest('tr').find('input[type="text"]').val('');
}
});
});
};
})( jQuery );