输入/搜索提交后后退按钮不起作用

时间:2019-02-06 作者:James

幸亏Sally CJ 我非常接近于通过我正在构建的自动完成搜索来解决所有问题。我遇到的唯一问题是,在用户被带到新页面后(根据他们从下拉/自动完成框中选择的内容),后退按钮不起作用。有时“后退”按钮只是灰显,而有时它会将用户带到看似随机的页面(或之前访问过2-3页的任何页面)。

以下是我的完整代码,如有任何修复建议,将不胜感激。我猜这和window.location.replace(permalink) 但不完全确定。

 /**
 * Proper way to enqueue scripts.
 */
function theme_enqueue_scripts() {
    // Enqueue jQuery UI and autocomplete
    wp_enqueue_script( \'jquery-ui-core\' );
    wp_enqueue_script( \'jquery-ui-autocomplete\' );
}
add_action( \'wp_enqueue_scripts\', \'theme_enqueue_scripts\' );

/**
 * Enqueue ui styles
 */
function theme_enqueue_styles() {
    // Enqueue jQuery UI themed styles.
    wp_enqueue_style( \'jquery-ui-redmond-core\', \'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/redmond/jquery-ui.min.css\', array(), null );
    wp_enqueue_style( \'jquery-ui-redmond-theme\', \'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/redmond/jquery-ui.min.css\', array(), null );
}
add_action( \'wp_enqueue_scripts\', \'theme_enqueue_styles\' ); 

/**
 * Add a shortcode for autocomplete drop down
 *
 * Use: [autocomplete]
 */
function theme_autocomplete_dropdown_shortcode( $atts ) {
    return \'<input type="text" name="autocomplete" id="autocomplete" value="" placeholder="start typing artist name..." />\';
}
add_shortcode( \'autocomplete\', \'theme_autocomplete_dropdown_shortcode\' );

function theme_autocomplete_js() {
    $args = array(
        \'post_type\' => \'show\',
        \'post_status\' => \'publish\',
        \'meta_key\'  => \'deal_date\',
        \'posts_per_page\'   => -1 // all posts
    );

    $posts = get_posts( $args );

        if( $posts ) :
            foreach( $posts as $k => $post ) {
                $source[$k][\'ID\'] = $post->ID;                                      
                $source[$k][\'label\'] = $post->post_title ." - ".  get_field(\'deal_date\', $post->ID);        
                $source[$k][\'permalink\'] = get_permalink( $post->ID );
                $source[$k][\'value\'] = \'\';
            }

    ?>

<script type="text/javascript">
        jQuery(document).ready(function($){
            var posts = <?php echo json_encode( array_values( $source ) ); ?>;

            jQuery( \'input[name="autocomplete"]\' ).autocomplete({
                source: posts,
                minLength: 2,
                select: function(event, ui) {
                    var permalink = ui.item.permalink; // Get permalink from the datasource
                    window.location.replace(permalink);                     
                }
            });
        });  

    </script> 

    <?php
    endif;
}
add_action( \'wp_footer\', \'theme_autocomplete_js\' );

1 个回复
SO网友:James

简单修复,更改为:window.location.href = (permalink);

相关推荐

Gantry4中的GravityForms不会显示

在将表单插入页面之前,在Gantry4模板中实现GravityForms效果良好。表单(包括条件)不会显示在页面的公共视图中。经过7个小时的研究,问题似乎来自主题(甘特瑞4),因为将其更改为另一个主题确实会显示表单,但GravityForms的支持团队没有给出任何直接的解决方案,他们宁愿建议更改主题。尝试将主题更改为Gantry5似乎需要几天的时间,而且无法确定问题是否会得到解决(因为问题可能是由于使用了mootools),而且由于控制台上没有出现错误,几乎不可能找到真正的原因。使用控制台进行一些测试,这