@@ -862,10 +862,12 @@ public function callback_repeater( $args ) {
862862 </div>
863863
864864 <script>
865- jQuery(document).ready(function($) {
866- var wrapper = $('#<?php echo esc_js ( $ args ['id ' ] ); ?> -wrapper');
867- var itemsContainer = wrapper.find('.<?php echo esc_js ( $ args ['id ' ] ); ?> -items');
868- var index = <?php echo esc_js ( (string ) count ( $ value ) ); ?> ;
865+ jQuery(document).ready(function($) {
866+ var wrapper = $('#<?php echo esc_js ( $ args ['id ' ] ); ?> -wrapper');
867+ var itemsContainer = wrapper.find('.<?php echo esc_js ( $ args ['id ' ] ); ?> -items');
868+ var index = <?php echo esc_js ( (string ) count ( $ value ) ); ?> ;
869+ var liveUpdateField = '<?php echo esc_js ( ! empty ( $ args ['live_update_field ' ] ) ? $ args ['live_update_field ' ] : 'name ' ); ?> ';
870+ var fallbackTitle = '<?php echo esc_js ( ! empty ( $ args ['new_item_text ' ] ) ? $ args ['new_item_text ' ] : $ this ->translation_strings ['repeater_new_item ' ] ); ?> ';
869871
870872 // Add Item
871873 wrapper.on('click', '.add-item', function() {
@@ -931,20 +933,28 @@ public function callback_repeater( $args ) {
931933 }
932934 });
933935
934- // Reindex Items After Adding, Removing, or Moving
935- function reindexItems() {
936- itemsContainer.find('.wz-repeater-item').each(function(idx) {
936+ // Reindex Items After Adding, Removing, or Moving
937+ function reindexItems() {
938+ itemsContainer.find('.wz-repeater-item').each(function(idx) {
937939 $(this).find(':input').each(function() {
938940 var name = $(this).attr('name');
939- if (name) {
940- name = name.replace(/\[\d+\]/, '[' + idx + ']');
941- $(this).attr('name', name);
942- }
941+ if (name) {
942+ name = name.replace(/\[\d+\](?=\[(?:fields|row_id)\])/, '[' + idx + ']');
943+ $(this).attr('name', name);
944+ }
945+ });
943946 });
947+ }
948+
949+ // Live update repeater title when the specified field changes.
950+ wrapper.on('input', '.wz-repeater-item :input[name$="[fields][' + liveUpdateField + ']"]', function() {
951+ var $this = $(this);
952+ var newName = $this.val();
953+ var $repeaterTitle = $this.closest('.wz-repeater-item').find('.repeater-title');
954+ $repeaterTitle.text(newName || fallbackTitle);
944955 });
945- }
946- });
947- </script>
956+ });
957+ </script>
948958 <?php
949959 $ html = ob_get_clean ();
950960 $ html .= $ this ->get_field_description ( $ args );
@@ -1050,22 +1060,7 @@ public function render_repeater_item( $args, $index, $item = null ) {
10501060 </div>
10511061 </div>
10521062
1053- <script>
1054- jQuery(document).ready(function($) {
1055- var wrapper = $('#<?php echo esc_js ( $ args ['id ' ] ); ?> -wrapper');
1056- var itemsContainer = wrapper.find('.<?php echo esc_js ( $ args ['id ' ] ); ?> -items');
1057-
1058- // Live update repeater title when the specified field changes
1059- var liveUpdateField = '<?php echo esc_js ( ! empty ( $ args ['live_update_field ' ] ) ? $ args ['live_update_field ' ] : 'name ' ); ?> ';
1060- wrapper.on('input', '.wz-repeater-item input[name$="[fields][' + liveUpdateField + ']"]', function() {
1061- var $this = $(this);
1062- var newName = $this.val();
1063- var $repeaterTitle = $this.closest('.wz-repeater-item').find('.repeater-title');
1064- $repeaterTitle.text(newName || '<?php echo esc_js ( $ fallback_title ); ?> '); // Update title or set default if empty
1065- });
1066- });
1067- </script>
1068- <?php
1063+ <?php
10691064 }
10701065
10711066
0 commit comments