2012-04-03 19 views
3

jQueryトークン入力でカスタム入力が許可されていません。jQueryトークン入力でカスタム入力が許可されていません

トークン入力の1.6.0バージョンをダウンロードしましたが、カスタムエントリを入力できません。テキストボックスにテキストを入力するとすぐに、&はカーソルを取り出し、テキストは消えます。 私は自動補完リストから選択する必要があります。

例: - 私が下の種類のスクリプト機能を使用している場合、解決策は何ですか?

<pre> 
<script type="text/javascript"> 
tokenInput("SOME_ID", "/token_input/name"); 

function tokenInput(text_box_id, url){ 
    jQuery("#" + text_box_id).tokenInput(url, { 
     allowCustomEntry: true, 
     preventDuplicates: true, 
     theme: "facebook", 
    }); 
    } 
</script> 
</pre> 

トークン入力はカスタム入力を許可する必要があります。

答えて

0

これはTokeninputマスターブランチで間もなく修正されるはずですが、その間にthis branchを自分のフォークにマージしてください。

1

私は魅力として働いています。

データベースを格納するカスタムエントリが必要でした。自動増分IDはこのトークンの値になります。

私はこれを次のように修正しました。データベースに新しいトークンを追加し、その新しい挿入IDはクライアント側に来て、追加されたトークンの値として設定されます。

pluginをgithubの無料タグ付け機能を使用して取得します。

<?php 
if(isset($_GET["q"])) { 
    $q = trim($_GET["q"]); 
    $isSearchItemExists = false; 
    $sql = sprintf("SELECT token_id, token from tokens WHERE token LIKE '%%%s%%' ORDER BY popularity DESC LIMIT 10", mysql_real_escape_string($q)); 
    $rec = mysql_query($sql); 

    $arr = array(); 
    while($row = mysql_fetch_array($rec)) { 
     $obj = new stdClass(); 
     $obj->id = $row["token_id"]; 
     $obj->name = $row["token"]; 
     if($obj->name==$q) { 
      $isSearchItemExists = true; 
     } 
     $arr[] = $obj; 
    } 
    if(!$isSearchItemExists) $arr = array_merge(getNewToken($q),$arr); 

    $json_response = json_encode($arr); 


    echo $json_response; 

} else if(isset($_GET["action"]) && $_GET["action"]=="newtoken") { 

    $token = strtolower($_REQUEST["name"]); 
    $sql = "SELECT * FROM tokens WHERE token='$token'"; 
    $rec = mysql_query($sql); 
    $numRows = mysql_num_rows($rec); 
    if($numRows>0) { 
     $row = mysql_fetch_array($rec); 
     $id = $row["token_id"]; 
    } else { 
     $sql = "INSERT INTO tokens SET token='$token'"; 
     $rec = mysql_query($sql); 
     $id = mysql_insert_id();  
    } 
    echo $id; 
    exit; 
} 

function getNewToken($q) { 

    $sql = "SELECT max(token_id) as token_id FROM tokens"; 
    $rec = mysql_query($sql); 
    $row = mysql_fetch_array($rec); 
    $maxToken = $row["token_id"]; 
    $newToken = $maxToken + 1; 

    $newItem = array(); 
    $new = new stdClass(); 
    $new->id = "0"; 
    $new->name = $q; 
    $newItem[] = $new; 

    return $newItem;  
} 
?> 
token.php

<input type="text" name="w_i_tk" id="w_i_tk"> 

<script> 
$(document).ready(function() {. 

    $("#w_i_tk").tokenInput("token.php", { 
     theme: "facebook", 
     hintText: "Type tag by which other can search, e.g. PHP, MySql etc.", 
     preventDuplicates: true, 
     tokenLimit: 5, 
     minChars: 2, 
     onAdd: function (item) { 
      if(item.id=="0") { 
       $.ajax({ 
        type:"GET", 
        url:"token.php", 
        data:{action:"newtoken",name:item.name}, 
        success: function(resp) { 
         $("#w_i_tk").tokenInput("remove", {name: item.name}); 
         $("#w_i_tk").tokenInput("add", {id: resp, name: item.name});  
        } 
       }); 

      } 

     }, 
     animateDropdown: false, 
     allowFreeTagging: true 
    }); 
}); 
</script> 

関連する問題