Add `datetimepicker` to form

时间:2015-10-21 作者:Interactive

我有一个表格,我想在其中添加datetimepicker().我一定是做错了什么事。

我做了以下工作:header.php

<?php wp_enqueue_script("jquery"); ?>
在我的functions.php

wp_enqueue_script(\'jquery-ui-datepicker\');
wp_enqueue_style(\'jquery-style\', \'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css\');
在我的template.php

<form id="" name="" action="<?php echo get_permalink(); ?>" method="post">
    <input type="text" id="MyDate" name="MyDate" value=""/>
    <input type="submit" value="Submit" name="submit">
</form>
<script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery(\'#MyDate\').datepicker({
            dateFormat : \'dd-mm-yy\'
        });
    });
</script> 
以下是错误:

Uncaught TypeError: jQuery(...).datepicker is not a function
我看到了<input> 元素,但如果单击它,则不会发生任何事情<这些都来自以下方面link

希望所有人都能看到我的错误
M。

3 个回复
SO网友:Quang Hoang

你可以试试这个。

add_action( \'wp_enqueue_scripts\', \'wpcustom_enqueue_script\' );
function wpcustom_enqueue_script() {
    wp_enqueue_style( \'datepicker-style\', \'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css\' );
    wp_enqueue_script( \'js-datepicker\', \'https://code.jquery.com/ui/1.12.1/jquery-ui.js\', array(\'jquery\'), null, true); 
}
阅读更多:http://jqueryui.com/datepicker/

SO网友:websupporter

我想,脚本是在页脚操作中加载的,而您的脚本是在之前加载的。

因此,我要尝试的是:通过适当的操作添加脚本:wp_enqueue_scripts

function wpse_206140_enqueue_script() {
    wp_enqueue_script( \'jquery-ui-datepicker\' );
    wp_enqueue_style( \'jquery-style\', \'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css\' );
}
add_action( \'wp_enqueue_scripts\', \'wpse_206140_enqueue_script\' );
如果仍然遇到此问题:请考虑将脚本外部化到一个文件中,并将此文件排队,以依赖于jquery-ui-datepicker, 看见here.

Also: Check wp_head() and wp_footer()另一个可能的原因可能是,您的主题没有执行wp_headwp_footer 行动。检查标题。php和页脚。php forwp_header()wp_footer(). 这些功能需要放在那里。

希望,这会有所帮助。

SO网友:bonger

尝试使用wp_print_footer_scripts 动作(前端)或admin_print_footer_scripts 具有较大优先级的操作(后端),以确保javascript尽可能晚地执行,例如

add_action( \'wp_print_footer_scripts\', function () {
    ?>
    <script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery(\'#MyDate\').datepicker({
            dateFormat : \'dd-mm-yy\'
        });
    });
    </script>
    <?php
}, 50 );
(参见https://wordpress.stackexchange.com/a/175855/57034)