0

所以,我有一个 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 定位每个字段

4

1 回答 1

0

我解决了它。

value="<?php echo $options['kjd_'.$name.'_fonts'][$element] ? $options['kjd_'.$name.'_fonts'][$element] : ''; ?>

该 if 语句的最后一部分不能为空,它必须是 ' '(空格),相反,为了让 farbtastic 更新输入,其中必须有一些值。所以我用'none'来避免混淆用户。

我的代码现在说

value="<?php echo $options['kjd_'.$name.'_fonts'][$element] ? $options['kjd_'.$name.'_fonts'][$element] : 'none'; ?>
于 2012-09-05T13:16:36.347 回答