【问题标题】:jQuery Autocomplete only works with UPPER CASEjQuery Autocomplete 仅适用于大写
【发布时间】: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();

}
?>

有什么想法吗?

【问题讨论】:

    标签: jquery autocomplete


    【解决方案1】:

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

    【讨论】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2011-05-02
      • 1970-01-01
      相关资源
      最近更新 更多