ACF Pro:隐藏字段不再更新

时间:2017-08-22 07:52:28

标签: javascript php jquery wordpress advanced-custom-fields

在早期版本的ACF Pro中,我可以使用select2字段的javascript获取所选值。 在早期版本中,这个功能'被删除了。

<input id="acf-field_590738c9b397c-input" name="acf[field_590738c9b397c]" value="" type="hidden">

更改select2字段时,

不再更新该值。

我正在尝试根据选择设置默认值。 这是我的代码:

(function ($) {
    'use strict';
    ;

    acf.add_action('ready', function ($input, args, settings, $field) {
        // console.log($input, args, settings, $field);
        // $input (jQuery) hidden input element
        // args (object) args given to the select2 function
        // settings (object) settings given to the acf.select2 function
        // $field (jQuery) field element

        var $field;
        $field = $('#acf-field_590738c9b397c-input');
        $field.on("change", function () {
            set_defaults($(this).val())
        });

        var defaultIntro=$('#default_intro').val();
        $('.acf-field-590778bbb66ff .acf-input').html(defaultIntro);
    });

    function set_defaults(value) {
        var val = $('#term_' + value).val();
        if (val) val = val.split(','); else val = [];

        $('[data-name="duties"] input[type="checkbox"],[data-name="bring_with"] input[type="checkbox"],[data-name="we_offer"] input[type="checkbox"]').each(function () {
            console.log($(this));
            if (val.indexOf($(this).val()) > -1)
                $(this).prop('checked', true);
            else
                $(this).prop('checked', false);
        });
    }
})(jQuery);

隐藏的term_id字段有效 - 我使用此代码创建它们:

function my_acf_load_field($field)
{
    $terms = get_terms(array('taxonomy' => 'pz_job_position', 'hide_empty' => false,));
    if (!empty($terms) && !is_wp_error($terms)) {
        foreach ($terms as $term) {
            $default_duties = is_array(get_field('default_duties', $term)) ? get_field('default_duties', $term) : [];
            $default_we_offer = is_array(get_field('default_we_offer', $term)) ? get_field('default_we_offer', $term) : [];
            $default_bring_with = is_array(get_field('default_bring_with', $term)) ? get_field('default_bring_with', $term) : [];
            $default = array_merge($default_duties, $default_we_offer, $default_bring_with);
            $default_terms = array();
            foreach ($default as $duty) {
                if (is_object($duty))
                $default_terms[] = $duty->term_id;
            }
            ?>
            <input type="hidden" value="<?php echo join(',', $default_terms) ?>" id="term_<?php echo $term->term_id ?>">

            <?php

        }
    }
    ?>
    <input type="hidden" value="<?php echo get_field('default_job_intro', 'option'); ?>" id="default_intro">
    <?php

}

//编辑: 问题是:早先根据选择更新了所描述字段的值,我可以使用我的功能。现在输入#acf-field_590738c9b397c-input的值不再更新nad $ field.on(&#39; change&#39;,())不再触发select2字段的值更改。

// EDIT2:

所以我真正想要实现的目标如下: 随着我们的成长,我们有很多正在进行的工作机会。 将工作放在我们网站上的人应根据工作描述设置潜在员工的默认要求。 例如:

如果我们雇用新的前台经理,用户可以创建一个新的“工作类型”&#39;有默认职责等

The Job Manager can create a new Job Type here

如果已有与新提供的作业匹配的作业说明,则作业管理员应仅选择后端中的位置: Job is created 选择“职位”时,应自动选择默认职责等。 这就是我想要实现的目标。

0 个答案:

没有答案