我有下面的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>
最合适的回答,由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
}
?>