2011-08-19 80 views
2

希望我不会错过已经存在的对这个问题的答案。我正在使用WordPress的主题,使用jQuery UI的自动完成提供前端形式的类别选择。代码如下。问题是,如果类别名称有&,则不能显示该字符,而是在自动填充框中显示&。我可以让它正确显示角色吗? `jQuery自动完成和WordPress中的特殊字符

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>` 

回答

0

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

+0

谢谢。我试图把它放在其他terms.push内容的新行中,并尝试替换现有的内容。所有这些都使自动完成功能停止工作。可能是因为我不知道我在做什么:-)我需要把它放在哪里?哦,我应该补充一下,即使在自动完成框中,它显示'&',当我实际做出选择时显示&...所以它只是在自动完成的建议,它的错误。 – LJC