WordPress中的jQuery自动完成和特殊字符

时间:2011-08-19 17:40:48

标签: jquery wordpress autocomplete special-characters ampersand

希望我不会错过这个问题的现有答案。我使用wordpress主题,使用jquery ui autocomplete以前端形式提供类别选择。代码如下。问题是,如果类别名称具有&,则无法显示该字符,而是在自动填充框中显示&。我可以让它正确显示角色吗? `

    jQuery(function(){

        /* Auto Complete */
        var availableTags = [
            <?php
                $terms_array = array();
                $terms = get_terms( 'majors', 'hide_empty=0' );

                if ($terms) foreach ($terms as $term) {
                    $terms_array[] = '"'.$term->name.'"';
                }
                echo implode(',', $terms_array);
            ?>
        ];
        function split( val ) {
            return val.split( /,\s*/ );
        }
        function extractLast( term ) {
            return split( term ).pop();
        }


        jQuery("#majors_wrap input").live( "keydown", function( event ) {
            if ( (event.keyCode === jQuery.ui.keyCode.TAB || event.keyCode === jQuery.ui.keyCode.COMMA) &&
                    jQuery( this ).data( "autocomplete" ).menu.active ) {
                event.preventDefault();
            }
        }).autocomplete({
            minLength: 0,
            source: function( request, response ) {
                // delegate back to autocomplete, but extract the last term
                response( jQuery.ui.autocomplete.filter(
                    availableTags, extractLast( request.term ) ) );
            },
            focus: function() {
                jQuery('input.ui-autocomplete-input').val('');
                // prevent value inserted on focus
                return false;
            },
            select: function( event, ui ) {

                var terms = split( this.value );
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push( "" );
                //this.value = terms.join( ", " );
                this.value = terms.join( "" );

                jQuery(this).blur();
                jQuery(this).focus();

                return false;
            }
        });

    });
</script>`

1 个答案:

答案 0 :(得分:0)

只需在返回的数据中替换它:terms.push( ui.item.value.replace("&amp;","&" );