そのため、ユーザーが farbtastic を使用してフォントなどの色を選択できるように、一連のフォーム フィールドを作成する foreach ループがあります。ループはおそらく 60 フィールドのフィールドを作成し、カラーピッキングが機能している間、何らかの理由で 20 フィールドの後 farbtastic は 16 進コードでの入力フィールドの更新を停止します。入力フィールドの背景色は変更されますが、フィールドは更新されません。
さらに奇妙なのは、これらすべてのフィールドが別々のタブにあり、ワードプレスがタブを処理する方法は、それぞれを新しいページに配置することです。そのため、ページをリロードする必要があります。したがって、後のタブ (したがって後のフィールド) に移動すると、2 つのフィールドのうちの 1 つが正しく機能しますが、ほとんどのフィールドは機能しません。同様に、あるタブのフィールド 2 は正常に機能しますが、別のタブの同じフィールドは機能しません。
現在、カラー ピッカーを制御する単一の jQuery メソッドがあります。
// Color Picker for js file
jQuery('.pickcolor').click( function(e) {
colorPicker = jQuery(this).next('div');
input = jQuery(this).prev('input');
jQuery(colorPicker).farbtastic(input);
colorPicker.show();
e.preventDefault();
jQuery(document).mousedown( function() {
jQuery(colorPicker).hide();
});
});
フォームフィールドはほとんどすべて次のようになります: $name はセクション名で、 $element は色が選択されているものです (ネストされた foreach ループ)
<div class="color_option option" style="position: relative;">
<label for="<?php echo $name; ?>_fonts"><?php echo $elementName;?> Color</label>
<input class="link_color" type="text" id="<?php echo $name; ?>_fonts"
name="kjd_<?php echo $name;?>_settings[kjd_<?php echo $name; ?>_fonts][<?php echo $element; ?>]"
value="<?php echo $options['kjd_'.$name.'_fonts'][$element] ? $options['kjd_'.$name.'_fonts'][$element] : ''; ?>"
style="background:<?php echo $options['kjd_'.$name.'_fonts'][$element]?>; color:<?php echo $options['kjd_'.$name.'_fonts'][$element]?>;"
/>
<input type='button' class='pickcolor button-secondary' value='Select Color'>
<div style="position: absolute;" class="colorpicker"></div>
したがって、jQueryは正しく見えますが、foreachループでjqueryを動的に作成して、各フィールドをIDでターゲットにする必要があるかどうか疑問に思います