当前位置: 首页 > 面试题库 >

jQuery UI令牌

甄华清
2023-03-14
问题内容

你好,我遵循了本教程,其中使用了jQuery
UI来生成令牌facebook,例如:http :
//net.tutsplus.com/tutorials/javascript-ajax/how-to-use-the-jquery-ui-
autocomplete-widget/

我的问题是我需要通过Json传递两个值:ID和NAME:服务器端脚本如下所示:

header('Content-Type: text/html; charset=iso-8859-1', true);
include($_SERVER['DOCUMENT_ROOT'].'/inrees/inrees/communaute/includes/_db.php');

$param = $_GET["term"];
$query = mysql_query("SELECT * FROM comm_carnet, in_emails 
                       WHERE carnet_iduser=emails_id 
                         AND emails_id!='".$_COOKIE['INREES_ID']."'  
                         AND emails_nom REGEXP '^$param'");

//build array of results
for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) {
    $row = mysql_fetch_assoc($query);
    $friends[$x] = array("name" = > $row["emails_nom"], "id" = > $row["emails_id"]);
}

//echo JSON to page
$response = $_GET["callback"]."(".json_encode($friends).")";

echo $response;

服务器端脚本的回显为:

([{"name":"dupont","id":"34998"},{"name":"castro","id":"34996"},{"name":"castelbajac","id":"34995"}])

(这正是我所需要的)

现在,我正在传递“名称”数组,但不需要传递“ id”,它需要是数据库中具有相应ID的隐藏输入,对php进行调用的html页面如下所示:

//attach autocomplete
$("#to").autocomplete({

    //define callback to format results
    source: function (req, add) {

        //pass request to server
        $.getJSON("messages_ajax.php?callback=?", req, function (data) {

            //create array for response objects
            var suggestions = [];

            //process response
            $.each(data, function (i, val) {
                suggestions.push(val.name);
            });

            //pass array to callback
            add(suggestions);
        });
    },

    //define select handler
    select: function (e, ui) {

        //create formatted friend
        var friend = ui.item.value,
            span = $("<span>").text(friend),
            a = $("<a>").addClass("remove").attr({
                href: "javascript:",
                title: "Remove " + friend
            }).text("x").appendTo(span);
        $("<input />", {
            value: "id",
            type: "hidden",
            name: "id"
        }).appendTo(span);
        //add friend to friend div
        span.insertBefore("#to");
    },

    //define select handler
    change: function () {
        //prevent 'to' field being updated and correct position
        $("#to").val("").css("top", 2);
    }
});

//add click handler to friends div
$("#friends").click(function () {
    //focus 'to' field
    $("#to").focus();
});

//add live handler for clicks on remove links
$(".remove", document.getElementById("friends")).live("click", function () {

    //remove current friend
    $(this).parent().remove();

    //correct 'to' field position
    if ($("#friends span").length === 0) {
        $("#to").css("top", 0);
    }
});

基本上就是您看到评论的地方:"//define select handler" 需要做点什么,但是我做不到!我添加了一行:

$("<input />", {value:"id", type:"hidden", name:"id"}).appendTo(span);
但它不会获取我的数组“ id”,因此不提供任何帮助。

问候


问题答案:

您的代码应为:

*用 演示

*更新

$(function() {
    $("#to").autocomplete({
        //define callback to format results
        source: function(req, add) {
            //pass request to server
            $.getJSON("json.json", req,
            function(data) {
                add($.map(data,
                function(item) {
                    return {
                        id: item.id,
                        label: item.name,
                        value: item.name
                    }
                }));
            });
        },
        //define select handler
        select: function(e, ui) {
            $('<a class="del_friend" href="#' + ui.item.id + '" title="remove">' + ui.item.label + '<span>x</span>' + 
              '<input name="friend[]" type="hidden" id="friend_' + ui.item.id + '" value="' + ui.item.id + '" /></a>').insertBefore('#to');
        },
        //define select handler
        change: function() {
            $("#to").val("");
        }
    });
 //delete friends
    $('a.del_friend').live('click', function(e) {
        e.preventDefault();
        var friend_id = this.hash.split('#')[1];
        alert(friend_id); //AJAX Call and delete item by it's ID
        $(this).fadeOut(500).remove()
    });
});
  • 注意: 这假设您的json代码如下所示:

[{{name“:” dupont“,” id“:” 34998“},{” name“:” castro“,” id“:” 34996“},{”
name“:” castelbajac“,” id“: “ 34995”}]

  • 有用的读物​​: http : //jqueryui.com/demos/autocomplete/#remote-jsonp


 类似资料:
  • 问题内容: 我正在尝试在同时引用 jQueryUI 和 Bootstrap 3 的View 上使用。如果我在jQueryUI的js之后加载Boostrap,则调用成功,但是如果我在Bootstrap之后调用jQueryUI,则出现错误,并且没有任何效果。您可以自己尝试。互联网上对此进行了大量讨论,我询问了有关GitHub的问题,但我还找不到解决方案。 问题答案: 理想的解决方案是采用没有工具提示的

  • JqueryUI 是目前最流行的前端框架。它是时尚,直观且功能强大的移动第一前端框架,可实现更快速,更轻松的 Web 开发。

  • 我有一个带有单个输入的html搜索表单。在输入字段中,用户可以写三个不同的东西:区域名称,旅行名称,其他关键字。 null 剧本: 提前感谢Chaim

  • 本文向大家介绍jQueryUI Sortable 应用Demo(分享),包括了jQueryUI Sortable 应用Demo(分享)的使用技巧和注意事项,需要的朋友参考一下 最近工作用需要设计一个自由布局的页面设计。我选了jQuery UI 的 sortable ,可以拖拽,自由排序 使用很方便,写一个demo,做个记录。 第一、单项目自由排序 下图效果 代码段: html: 第二、多排序组之间

  • 本文向大家介绍jqueryUI里拖拽排序示例分析,包括了jqueryUI里拖拽排序示例分析的使用技巧和注意事项,需要的朋友参考一下 示例参考http://jsfiddle.net/KyleMit/Geupm/2/  (这个站需要FQ才能看到效果) 其实是jqueryUI官方购物车拖拽添加例子的增强版,就是在拖拽的时候增加了排序 这个是html代码   这个是js代码主要在js代码中红色代码部分设置

  • 我试图在qtip中的图像上显示jQuery UI工具提示。现在,工具提示显示在工具提示后面。你知道怎么把它展示在它面前吗? 小提琴在这里:http://jsfiddle.net/wYM2Q/ 将鼠标移到文本“bind qtip to this”上。然后将鼠标悬停在qtip内的图像上。你会看到qtip后面显示的工具提示,我想在它前面显示。

  • 本文向大家介绍jquery实现仿JqueryUi可拖动的DIV实例,包括了jquery实现仿JqueryUi可拖动的DIV实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jquery实现仿JqueryUi可拖动的DIV。分享给大家供大家参考。具体如下: 这是用Jquery写的代码,仿JQUERYUI的Draggable或者是Dialog,希望大家喜欢,写的一个小东西。参考了下网上的其他

  • 问题内容: 我喜欢jQueryUI的对话框。但是,似乎没有一种动态加载内置内容的方法。我想我必须使用其他方法来实现这一目标?iframe仅在可见时才会加载内容吗?这是正确的方法吗? 如果其他对话框机制更适合仅在首次打开时加载内容,则我愿意接受。 问题答案: 这并非难事-仅此而已,我不会开始与iframe搞混。这样的事情怎么样? 基本上,您创建对话框,然后打开对话框,从服务器中加载一个html文件,