jQuery Autocomplete 仅适用于大写

Posted

技术标签:

【中文标题】jQuery Autocomplete 仅适用于大写【英文标题】:jQuery Autocomplete only works with UPPER CASE 【发布时间】:2016-03-22 10:26:11 【问题描述】:

我有一个带有一些自定义 php 编码的 WordPress 网站。我不知道发生了什么变化,但我注意到我的自动完成字段不再正常工作。

我有一个表单字段,在其中输入玩家姓名,输入三个字符后,我会从数据库中检索可能匹配的列表以供选择。我今天注意到,它仍在工作,但只是在我在 player2 字段中输入时使用所有大写字母的情况下。如果我使用常规字母,我总是从数据库中获取前 10 条记录,而不管搜索词是什么。奇怪的!!!

这是我的表单 jquery 代码:

<script type="text/javascript">
    jQuery(document).ready(function($)
        $('#player2').autocomplete(
            source:'/wp-content/themes/canvas-child/suggest-pid2.php', 
            minLength:2,
            autoFocus: true,
            select: function (event, ui) 
                    // Set autocomplete element to display the label
                    this.value = ui.item.playername;

                    // Store value in hidden field
                    $('#PlayerID').val(ui.item.value);

                    // Prevent default behaviour
                    return false;
            
        );
    );
</script>

这是我从数据库中获取记录的搜索代码:

<?php

// get search term (player name or surname)
$term = $_REQUEST['term'];

if (isset($term))     


    $dblink = mysql_connect('localhost', 'un', 'pw') or die( mysql_error() );
    mysql_select_db('db');
    $sql = "SELECT " .
            "P.PlayerID, P.PlayerName, P.PlayerSurname, C.CityName, " .
            "DATE_FORMAT(P.PlayerDateOfBirth, '%Y') AS PlayerYearOfBirth " .
        "FROM players P " .
            "LEFT JOIN cities C ON C.CityID = P.CityID " .
        "WHERE P.PlayerName LIKE '" . $term . "%' " .
            "OR P.PlayerSurname LIKE '" . $term . "%' " . 
        "ORDER BY P.PlayerName, P.PlayerSurname ASC LIMIT 0,10;";


    // Important - UTF-8!!!
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $dblink);
    $rs = mysql_query($sql, $dblink);
    $data = array();
    if ( $rs && mysql_num_rows($rs) )     
        while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )         
            $data[] = array(            
            'label' => $row['PlayerName'] .' '. $row['PlayerSurname'] .' ('. $row['PlayerYearOfBirth'] .'), '. $row['CityName'] ,            
            'value' => $row['PlayerID'] ,            
            'playername' => $row['PlayerName'] .' '. $row['PlayerSurname']        
            );    
            
    echo json_encode($data);
    flush();


?>

有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以将字符串转换为大写以进行查询

【讨论】:

我试过了,但这不起作用。看起来如果以小写形式输入搜索词,它会被识别为空字符串。【参考方案2】:

我从头开始重新创建文件,现在它可以工作了。我不知道出了什么问题,但看起来 php 文件已损坏。现在工作。

【讨论】:

以上是关于jQuery Autocomplete 仅适用于大写的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Autocomplete 与 IE7 的兼容性

C#。适用于大数据的可扩展高负载架构

Jquery 动画仅适用于一个元素

jquery .each 仅适用于第一个元素

Jquery 网格仅适用于要加载的 8400 行。

jquery hover 仅适用于点击事件?