【发布时间】:2018-03-01 11:04:29
【问题描述】:
我很难让 jQuery UI 自动完成功能在 WordPress 定制器中工作。
我构建了以下自定义控件以将其集成到 WordPress 定制器中。
<?php
namespace MailOptin\Core\Admin\Customizer\CustomControls;
use WP_Customize_Control;
class WP_Customize_Autocomplete_Input_Control extends WP_Customize_Control
{
public $type = 'mailoptin_autocomplete';
public $field_id = 'mo-autocomplete';
public $options = [];
public $input_type = 'text';
public $sub_description;
public function enqueue()
{
wp_enqueue_script(
'mailoptin-autocomplete-init',
MAILOPTIN_ASSETS_URL . 'js/customizer-controls/autocomplete-init.js',
array('jquery', 'customize-base', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-autocomplete'),
false,
true
);
}
public function render_content()
{
?>
<div>
<label>
<?php if (!empty($this->label)) : ?>
<span class="customize-control-title"><?php echo esc_html($this->label); ?></span>
<?php endif;
if (!empty($this->description)) : ?>
<span class="description customize-control-description"><?php echo $this->description; ?></span>
<?php endif; ?>
<input id="<?php echo $this->field_id; ?>" class="mo-autocomplete" value="<?php echo esc_attr($this->value()); ?>" <?php $this->link(); ?> />
<?php if (!empty($this->sub_description)) : ?>
<span class="description customize-control-description"><?php echo $this->sub_description; ?></span>
<?php endif; ?>
</label>
</div>
<?php
}
}
下面是自定义控件的附带JS文件
wp.customize.controlConstructor['mailoptin_autocomplete'] = wp.customize.Control.extend({
ready: function () {
var control = this;
jQuery( function() {
var availableTags = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Clojure",
"COBOL",
"ColdFusion",
"Erlang",
"Fortran",
"Groovy",
"Haskell",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scala",
"Scheme"
];
jQuery( ".mo-autocomplete" ).autocomplete({
source: availableTags
});
} );
}
});
但它不起作用。
假设我在字段中键入“PHP”,标记更改为下面的代码,但它不起作用。没有显示建议的下拉列表。
<input class="mo-autocomplete ui-autocomplete-input" value="" data-customize-setting-link="mo_optin_campaign[98][subscriber_tag]" autocomplete="off">
【问题讨论】: