如何在选择框中保存插件选项数组

时间:2016-09-29 作者:SAFEEN 1990

我有下面的google字体代码,我从google web fonts URL中检索到google fonts详细信息作为JSON数据。然后我把所有信息输入$items = $data[\'items\'];

然后我创建了Goole font names 然后为创建另一个选择框google font variants(font weights) 通过使用javascript。

所有代码都能正常工作。我把<?php echo selected($YPE_font[\'my_option\'], $item[\'family\'], false); ?> 用于在中保存第一个选择框字体名称值my_option 大堆

但我不知道如何在我的插件选项名称数组中保存javascript代码中的第二个选择框值

<?php
    $YPE_font = get_option(\'my_option_name\');
$items = $data[\'items\'];
$jsItems = array();
foreach($items as $item) {
    $family = $item[\'family\'];
    $jsItems[$family] = $item[\'variants\'];
}
?>
<select id="fonts" name="my_option[<?php echo $id1; ?>]" class="form-control">
<?php foreach($items as $item): ?>
    <option value="<?php echo $item[\'family\']; ?>" <?php echo selected($YPE_font[id1], $item[\'family\'], false); ?>><?php echo $item[\'family\']; ?></option>
<?php endforeach;?>
</select>
<select id="variants" name="my_option[<?php echo $id2; ?>]" class="form-control">

</select>

<script>
jQuery(document).ready(function($){
    var items = <?php echo json_encode($jsItems);?>;
    $("#fonts").change(function(){
        var selectedFont = $(this).val();
        var variants     = items[selectedFont];
        for (i = 0; i < variants.length; i++){
            $("#variants").append(\'<option value="\'+variants[i]+\'">\'+variants[i]+\'</option>\');
        }
    })
});
</script>

2 个回复
最合适的回答,由SO网友:Shwan Namiq 整理而成

第二个选择框必须如下所示。当您更改第一个选择框值时,javascript代码只负责更改字体变体,而不使用它来保存值。

<select id="variants" name="<?php echo $bsn_option; ?>[<?php echo $id2; ?>]" class="form-control">
<?php
    $currentFont = $YPE_font[$id1];
    foreach ($jsItems[$currentFont] as $variants) { ?>
        <option value="<?php echo $variants; ?>" <?php echo selected($YPE_font[$id2], $variants, false); ?>><?php echo $variants; ?></option><?php
    }
?>

SO网友:Benoti

您可以尝试使用json\\U解码而不是json\\U编码来填充项目变量。

在php方面,您必须对json变量进行编码,对于真正的js解析,您可以使用(在change函数中)$.parseJSON(items)