0

次のように、すべての入力の前に数字を含む繰り返し可能なフィールド(アルバムのトラックリスト用)を使用して、Wordpressでカスタムメタボックスを作成しようとしています:

  1. タイトル (削除)
  2. タイトル (削除)
  3. などなど

フィールドを削除するための「削除」ボタンがあり、置き換えた数値よりも優れた数値に更新する必要があります。数字 (およびその ID) のすべての置換は、フィールドを削除すると正常に機能しますが、(正確に) 10 個以上のフィールドがあり、10 以上の数字が置き換えられない場合を除きます。

ただし、11 番目のフィールドを削除すると、12 番目のフィールドの番号は正しく「11」に置き換えられます。

ここに私のjquery:

jQuery('.repeatable-remove').click(function(){
var splittingNumber = jQuery(this).parent().find('input').attr('id');
var splitNumber = splittingNumber.split('_');
var splittedNumber = splitNumber[2];

jQuery('.album_track').each(function() {

    var albumSplitNumber = this.id.split('_');
    var albumSplittedNumber = albumSplitNumber[2];
    var albumSplittedMinusOne = albumSplittedNumber - 1;

    if (albumSplittedNumber > splittedNumber) {                 

        if (albumSplittedNumber >= 10) {
            jQuery(this).parent().find('.repeatable-autonumber').empty().append(albumSplittedMinusOne+'. ');                    
        }
        else if (splittedNumber < 10) {
            jQuery(this).parent().find('.repeatable-autonumber').empty().append('0'+albumSplittedMinusOne+'. ');
        };

        jQuery(this).attr('id', 'album_track_'+albumSplittedMinusOne);
        jQuery(this).attr('name', 'album_track_'+albumSplittedMinusOne);

    };

})

jQuery(this).parent().remove();
return false;
});

参考までに、「album_track_1」、「album_track_2」などの名前の ID フィールドでこれを行います...

なぜ10という数字に問題があるのか​​ 本当にわかりません...

HTMLコードを編集:

<ul id="<?php echo $album_tracklist_field['id']; ?>-repeatable" class="custom_repeatable">
<?php
$i = 1;
if (isset($custom["album_track_$i"][0])) {  
    while(!empty($custom["album_track_$i"][0])) {
        ?>
        <li>
            <span class="repeatable-autonumber"><?php if ($i <= 10) { echo '0'.$i.'. '; } else { echo $i.'. '; } ?></span> 
            <input type="text" class="regular-text code album_track" name="album_track_<?php echo $i; ?>" id="album_track_<?php echo $i; ?>" value="<?php echo $custom["album_track_$i"][0]; ?>"> 
            <span class="repeatable-remove"><?php _e('Remove', 'albums') ?></span>
        </li>
        <?php
        $i++;  
    }  
} else {  
    ?>
    <li>
        <span class="repeatable-autonumber">01. </span>
        <input type="text" class="regular-text code album_track" name="<?php echo 'album_track_' . $i; ?>" id="<?php echo 'album_track_' . $i; ?>" value="" placeholder="<?php _e('Enter the name of the song', 'albums') ?>"> 
        <span class="repeatable-remove"><?php _e('Remove', 'albums') ?></span>
    </li>
    <?php
}  
?>

4

0 に答える 0