2012-04-03 6 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

Он работает для меня как очарование.

Мне нужна пользовательская запись, в которой будет храниться база данных, а идентификатор автоматического инкремента будет значением этого токена.

Я исправил это как следующее. Есть трюки, при добавлении токена запрос переходит на сервер, добавляет новый токен в базу данных, а его новый идентификатор вставки приходит на клиентскую сторону и задается как значение добавленного токена.

Получить plugin с помощью бесплатного средства пометки от 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;  
} 
?> 

 Смежные вопросы

  • Нет связанных вопросов^_^