twitter bootstrap typeahead不工作

时间:2013-09-30 14:12:37

标签: javascript jquery-autocomplete bootstrap-typeahead

我正在开发twitter bootstrap typeahead并且因为我没有收到任何错误而卡住了,但是自动完成功能无效。

这是我的输入字段

<input type="text" id="autocomplete" />

这是我的脚本

<script>
    $('#autocomplete').typeahead({
            source: function(process) {
                var data =  <?php Widgets::allProducts() ?>;
                process(data);
        },

        matcher: function(item) {

            return
            item.name.toLocaleLowerCase()
                .indexOf(this.query.toLocaleLowerCase()) != -1;

        },
        highlighter: function(item) {
            return item.name;

        },
        updater: function (item) {
            alert(JSON.parse(item).value);
            return JSON.parse(item).name;

        }
    });

</script>

这就是我var data的样子

var data =  [{"name":"Acne.org","id":"5"},{"name":"AcneFree","id":"6"},{"name":"Alpha Hydrox","id":"16"},{"name":"AmLactin","id":"17"},{"name":"Astara","id":"21"}];

我想要做的是获取列出的产品名称(name中的var data),并在选择产品时将用户重定向到产品页面(借助我的产品ID)作为var data进入id

我在这个阶段迷失了,因为我没有收到任何错误。我将不胜感激任何正确的方向。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:-4)

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Meta, title, CSS, favicons, etc. -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Tokenfield for Bootstrap</title>

    <!-- Bootstrap core CSS -->
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
    <!-- jQuery UI CSS -->
    <link href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" type="text/css" rel="stylesheet">
    <!-- Bootstrap styling for Typeahead -->
    <link href="dist/css/tokenfield-typeahead.css" type="text/css" rel="stylesheet">
    <!-- Tokenfield CSS -->
    <link href="dist/css/bootstrap-tokenfield.css" type="text/css" rel="stylesheet">
    <!-- Docs CSS -->


  </head>
  <body>

    <input type="text" class="form-control" id="tokenfield-typeahead" value="red,green,blue" />


    <script type="text/javascript" src="//code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="//code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <script type="text/javascript" src="dist/bootstrap-tokenfield.js" charset="UTF-8"></script>
    <script type="text/javascript" src="docs-assets/js/scrollspy.js" charset="UTF-8"></script>
    <script type="text/javascript" src="docs-assets/js/affix.js" charset="UTF-8"></script>
    <script type="text/javascript" src="docs-assets/js/typeahead.bundle.min.js" charset="UTF-8"></script>
    <script type="text/javascript" src="docs-assets/js/docs.min.js" charset="UTF-8"></script>
</body>
<?php

    try
    {
        $Conn=mysqli_connect("localhost","root","","andani_play");
        $Query="SELECT `GroupName` FROM `group`";

        $Result=mysqli_query($Conn,$Query);
        $Array=array();
        if($Result)
        {

            while($Data=mysqli_fetch_array($Result))
            {
            array_push($Array,$Data[0]);


            }
        echo json_encode($Array);
        }
        else
        {
        echo mysqli_error($Conn);
        }

    }
    catch (mysqli_error $e)
    {
    echo "error connecting to the database/host";
    exit();
    }


?>
<script>
$(document).ready(function(){
var engine = new Bloodhound({
  /*local: [{value: 'red'}, {value: 'blue'}, {value: 'green'} , {value: 'yellow'}, {value: 'violet'}, {value: 'brown'}, {value: 'purple'}, {value: 'black'}, {value: 'white'}],*/
  source: [<?php echo json_encode($Array); ?>],
  datumTokenizer: function(d) {
    return Bloodhound.tokenizers.whitespace(d.value);
  },
  queryTokenizer: Bloodhound.tokenizers.whitespace
});

engine.initialize();

$('#tokenfield-typeahead').tokenfield({
  typeahead: [null, { source: engine.ttAdapter() }]
});
});
</script>
  </body>
</html>