所以,我有一个foreach循环创建了一堆表单字段,允许用户使用farbtastic为字体等选择颜色。循环创建了大约60个字段的字段,并且在采样时,无论出于何种原因,20个字段之后,farbtastic停止使用十六进制代码更新输入字段。它会更改输入字段背景颜色,但不会更新字段。
更奇怪的是,所有这些字段都在单独的标签中,而wordpress处理标签的方式是将每个字段放在一个新页面上。所以页面必须重新加载。因此,一旦你到达后面的标签(以及后面的字段),其中一个字段将正常工作,但大多数不会。因此,一个选项卡上的字段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定位每个字段
答案 0 :(得分:0)
我解决了它的问题。
value="<?php echo $options['kjd_'.$name.'_fonts'][$element] ? $options['kjd_'.$name.'_fonts'][$element] : ''; ?>
if语句的最后一部分不能为空,它必须是''(空格),相反,为了远程更新输入,必须有一些值。所以我使用'none'来避免混淆用户。
我的代码现在说
value="<?php echo $options['kjd_'.$name.'_fonts'][$element] ? $options['kjd_'.$name.'_fonts'][$element] : 'none'; ?>