0

こんにちは、配列変数のリンクがあります。 との値を動的に追加する必要がkeywordsあります。labelこれをどのように追加しますか?ありがとうございました

アップデート

MyIssueオートコンプリートのために、その配列にキーワードとラベルの値を動的に追加 (プッシュ) する必要があります。これを行う方法?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>jQuery UI Autocomplete - Default functionality</title>
    <link rel="stylesheet" href="http://jqueryui.com/themes/base/jquery.ui.all.css">
     <script type="text/javascript" charset="utf-8" src="../js/cordova-1.7.0.js"></script>
 <script type="text/javascript" charset="utf-8" src="../js/jquery-1.7.2.js"></script>

    <script src="http://jqueryui.com/ui/jquery.ui.core.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.widget.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.position.js"></script>
    <script src="http://jqueryui.com/ui/jquery.ui.autocomplete.js"></script>
    <link rel="stylesheet" href="http://jqueryui.com/demos/demos.css">
    <script>
    $(function() {
        var links = [
        {
            keywords: ['create', 'add', 'make', 'insert', 'user'],
            label: "Create user",
            //desc: "Create a user in the system",
            //url: 'http://mysite.com/user/create/'
        },
        {
            keywords: ['create', 'add', 'make', 'insert', 'organisation'],
            label: "Create organisation",
           // desc: "Create an organisation in the system",
           // url: 'http://mysite.com/organisation/create/'
        }];
        $( "#tags" ).autocomplete({

             source: function(request, response) {  
             var matched = [];

        for (var k = 0; k < links.length; k++) {
            if (checkSearchWordsMatchKeywords(request.term, links[k]['keywords'])) {
                matched.push(links[k]);
            }
        }
        // display the filtered results
        response(matched);

             } 
        });

        function checkSearchWordsMatchKeywords(searchWords, keywords)
        {
            var searchWords = searchWords.toLowerCase();    // Lowercase the search words
            var searchWords = searchWords.split(' ');       // Break up the search into separate words
            var numOfSearchWords = searchWords.length;      // Count number of search words
            var numOfKeywords = keywords.length;            // Count the number of keywords
            var matches = [];                               // Will contain the keywords that matched the search words

            // For each search word look up the keywords array to see if the search word partially matches the keyword
            for (var i = 0; i < numOfSearchWords; i++)
            {
                // For each keyword
                for (var j = 0; j < numOfKeywords; j++)
                {   
                    // Check search word is part of a keyword
                    if (keywords[j].indexOf(searchWords[i]) != -1)
                    {
                        // Found match, store match, then look for next search word
                        matches.push(keywords[j]);
                        break;
                    }
                }
            }
            if (matches.length == numOfSearchWords)
            {

                return true;
            }
            }

    });
    </script>
</head>
<body>

<div class="demo">

<div class="ui-widget">
    <label for="tags">Tags: </label>
    <input id="tags" />
</div>

</div><!-- End demo -->

</body>
</html>
4

3 に答える 3

2

新しいラベルを追加するには

newLabel = { "keywords":[], "label":"Empty Label" };
links.push(newLabel);

キーワードに追加するには、リンク配列を反復処理する必要があります

$(links).each(function(){ if(this["label"] = "Empty Label") { this["keywords"].push("newKeyword") } });    

上記のコードは、「空のラベル」ラベルのキーワードに追加することを検討しています

于 2012-08-01T12:56:41.123 に答える
2

一般的な方法は(キーワード配列のインデックスがわかっている場合)、

links[index].keywords[links[index].keywords.length] = "your new value";

links[index].label = "your new label value";

indexより具体的な方法でお手伝いできるように、価値をどのように決定するかをお知らせください:)

于 2012-08-01T12:53:19.017 に答える
0

キーとラベルを変数として設定し、キーを配列内のラベルのインデックスに追加します。

var links = new Array();
var keys = ['create', 'add', 'make', 'insert', 'user'];
var label = "Create user";

links[label] = keys;

alert(links["Create user"]);

アラート:create,add,make,insert,user

于 2012-08-01T12:56:54.540 に答える