通过javascript将php值的数组插入到select选项中

Inserting a array of php values into a select options via javascript

本文关键字:插入 select 选项 数组 javascript php 通过      更新时间:2023-09-26

我有多个选择元素,每个选择表单要么是块类型,要么是块内容。所以我总共有大约10个选择元素,其中5个是块类型,5个是块内容。块内容的选择选项将由用户在块类型中选择的内容决定。我有3个数组(属性,博客,消息),其中有块内容所需的值。

所以我需要做的是-检查用户为块类型选择了什么—我已经这样做了。用相关值填充块内容-这就是我遇到问题的地方。

这是目前为止我的javascript代码

$(".blockTypeWrapper .blockType").change(function() {
var currentBlock = $(this).val();
var blockContent = $(this).parent().siblings('.blockContentWrapper .blockContent');
if (currentBlock == '1') {
    var option = document.createElement("option");
    var propertyData = <?php echo $properties; ?>;
    $.each(propertyData, function() {
        options.append(new Option(option.text, option.value));
    });
};
if (currentBlock == '2') {
    $(this).siblings(".blockContent").addClass("active");  
};
if (currentBlock == '3') {
    $(this).siblings(".blockContent").addClass("active");  
};

});

忽略currentBlock == '2'和3代码,我只是想让它首先工作。

如果有其他更简单的方法,我洗耳恭听。编辑
echo $this->Form->input('main_block_type',  
    array(
      'options' => array(
        1 => 'Property',
        2 => 'Blogs',
        3 => 'Message'
      ), 
      'label' => 'Main Block Type', 
      'empty' => 'Please Select',
      'class' => 'blockType',
      'div' => array(
        'class' => 'blockTypeWrapper'
      )
    )
  );
echo $this->Form->input('main_block',  
    array(
      'options' => $blogs, 
      'label' => 'Main Block Content', 
      'empty' => 'Please Select',
      'class' => 'blockContent',
      'div' => array(
        'class' => 'blockContentWrapper'
      )
    )
  );

谢谢

不能使用echo访问Array。您需要使用:

访问

<?php echo json_encode($properties); ?>;

尝试下面的代码:

if (currentBlock == '1') {
            var propertyData = <?php echo json_encode($properties); ?>;
             $(".blockContent").empty();  // You can remove all the options by using empty() function.
            $.each(propertyData, function (i, item) {
                $('.blockContent').append($('<option>', {
                    value: item.value,
                    text: item.text
                }));
            });
        }
PHP的属性数组应该是这样的:
$properties = array(
    'item1' => array('text' => 'item1 text', 'value' => 'item 1 value'),
    'item2' => array('text' => 'item2 text', 'value' => 'item 2 value'),
    'item3' => array('text' => 'item3 text', 'value' => 'item 3 value')
);