当第一个字符为0时,AutoComplete不会启动

时间:2012-10-02 17:23:26

标签: jquery-ui jquery autocomplete

当我输入的第一个字符为0(零)时,是否有人知道为什么我的自动完成功能不起作用?出于调试目的,我设置我的AC只是告诉我一行是否被找到,似乎对于我输入的任何字符作为它告诉我的第一个字符,除了0.我必须在0之后键入第二个字符它开始工作并开始工作。当第一个字符为0时,好像minLength属性为2。是否有人遇到或听说过这个并知道如何修复它?这是我的代码:

//AutoComplete code in question
$(function() {
    var itemcode_ac = {
        source: "/webservices/whs_bincodeAC.php",
        select: function(event, ui) {
            $('#txtBin').val(ui.item.value);
            getWhsInfo();
        },
        minLength: 1
    }
    $('#txtBin').autocomplete(itemcode_ac);
});

whs_bincodeAC.php:

<?php
if(isset($_GET["term"]) && !empty($_GET["term"])) {
    include_once $_SERVER['DOCUMENT_ROOT'].'/path/to/dbConnect.php';
    $term = mysql_real_escape_string(trim($_GET["term"]));
    //wildcard appended here for parameterized query (MySqli)
    $term .= "%";

    $query = "SELECT DISTINCT BinCode, ItemCode, ItemName, WhsCode, DataAsOfDate FROM whse_tbl 
        WHERE BinCode LIKE '$term' or ItemCode LIKE '$term' ORDER BY BinCode LIMIT 0, 10";
    $res = mysql_query($query);

    //This is the debug code I described above
    /*if($row = mysql_fetch_assoc($res))
        echo json_encode(array(array('value' => "is row")));
    else
        echo json_encode(array(array('value' => "no row")));
    return;*/

    $matches = array();
    while($row = mysql_fetch_assoc($res))
    {
        $matches[] = array('value' => $row["BinCode"], 'label' => $row["BinCode"].' - '.$row["ItemCode"],
            'name' => $row["ItemName"], 'whscode' => $row["WhsCode"], 'asOfDate' => $row["DataAsOfDate"]);
    }

    echo json_encode($matches);
}
?>

注意:我的老板现在让我使用MySql而不是MySqli扩展程序。

1 个答案:

答案 0 :(得分:4)

可能你正在做类似以下的事情。

if(empty($_GET["bin"]))if(!$_GET["bin"])检查它的价值。

但在这种情况下,如果bin0,则第一个案例会产生true,第二个案例会产生false

所以请改用isset($_GET["bin"])