Как использовать jQuery.autocomplete для скрытого поля ввода (type = "text")? - PullRequest
1 голос
/ 05 октября 2011

Я пытаюсь использовать автозаполнение из jQuery для текстового поля внутри скрытого div.Кажется, это не работает, хотя поле ввода получает класс ui-autocomplete-input.Как будто ни одно событие не связано с моим вкладом.

Для ясности код выглядит следующим образом:

<a href="#overlay" class="open-the-overlay-that-has-the-id-like-this-href-attribute">OPEN</a>

<div id="overlay" style="display:none">
    <form action="/action" method="post">
        <input type="text" id="my-unique-id" />
        <input type="submit" />
    </form>
</div>

<script type="text/javascript">
$(document).ready(function(){

    $("#my-unique-id").autocomplete({
        source: "search.php",
        minLength: 2
    });

});
</script>

После этого # my-unique-id получает класс ui-autocomplete-input, но не имеет связанных событий.Есть идеи?

Вот скрипт на стороне сервера, но в этом нет ничего плохого, потому что в другом поле он работает нормально:

(CakePHP)

function getCity() {

    $this->layout = FALSE;
    $this->autoRender = FALSE;
    Configure::write("debug",0);

    if(isset($_GET["term"]) && !empty($_GET["term"])) {
        AppModel::unbind($this->City);
        preg_match_all("/(\w+)/",urldecode($_GET["term"]), $term);
        $or = array();
        foreach ($term[0] as $t) {
            if(strtolower($t) != "jud")
            $or[] = "City.name LIKE '%$t%'"; // OR City.county LIKE '%$t%'
        }
        $or = implode(" OR ", $or);
        $cities = $this->City->find("all", array("limit"=>30, "fields"=>array("City.id", "City.name", "City.county"),"conditions"=>array($or)));
        $returnArray = array();
        $k = 0;
        foreach($cities as $c) {
            $returnArray[$k]['id'] = $c["City"]["id"];
            $returnArray[$k]['label'] = $c["City"]["name"].", jud. ".$c["City"]["county"];
            $returnArray[$k]['value'] = $c["City"]["name"].", jud. ".$c["City"]["county"];
            $k++;
        }
        return json_encode($returnArray);
    }
}

1 Ответ

0 голосов
/ 05 октября 2011

Ваш код правильный, что может быть не так, это ваш серверный скрипт, который не возвращает данные, и, похоже, ничего не происходит. Не могли бы вы опубликовать свой серверный скрипт?

Вы также можете попробовать использовать локальный источник данных:

    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC",
        "C",
        "C++",
        "Clojure",
        "COBOL",
        "ColdFusion",
        "Erlang",
        "Fortran",
        "Groovy",
        "Haskell",
        "Java",
        "JavaScript",
        "Lisp",
        "Perl",
        "PHP",
        "Python",
        "Ruby",
        "Scala",
        "Scheme"
    ];

 $("#my-unique-id").autocomplete({
        source: availableTags ,
        minLength: 2
    });
...