2012-04-03 3 views
3

In Rails erlaubt die jQuery-Token-Eingabe keine benutzerdefinierte Eingabe.In Schienen akzeptiert der jQuery-Token-Eingang keinen benutzerdefinierten Eintrag.

Ich habe 1.6.0 Version der Token-Eingabe heruntergeladen, aber ich kann keinen benutzerdefinierten Eintrag eingeben. Sobald ich einen Text in einem Textfeld & Take-out-Cursor eingeben, wird der Text verschwinden. Nur ich muss aus der Autovervollständigungsliste auswählen.

ZB: - Wenn ich unten Art der Skriptfunktion verwende, was wird die Lösung sein?

<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> 

Bitte geben Sie mir die Lösung dafür, Token-Eingabe sollte die benutzerdefinierte Eingabe ermöglichen.

Antwort

0

Dies sollte hoffentlich bald in der Tokeninput-Master-Zweig behoben werden, aber in der Zwischenzeit, this branch in Ihre eigene Gabel verschmelzen sollte dies für Sie beheben.

1

Es funktioniert für mich als Charme.

Ich hatte benutzerdefinierten Eintrag, der Datenbank speichern wird und Auto-Inkrement-ID wird der Wert dieses Tokens sein.

Ich habe das wie folgt behoben. Es gibt Tricks, beim Hinzufügen eines Tokens geht eine Anfrage an den Server, fügt ein neues Token zur Datenbank hinzu und seine neue Einfüge-ID kommt zur Client-Seite und wird als Wert des hinzugefügten Tokens gesetzt.

Erhalten Sie plugin mit erlauben freie Markierung von Github.

<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> 

token.php

<?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;  
} 
?> 
Verwandte Themen