Javascript 截取并预处理jQuery ui自动完成数据

Javascript 截取并预处理jQuery ui自动完成数据,javascript,jquery,ajax,jquery-ui,jquery-ui-autocomplete,Javascript,Jquery,Ajax,Jquery Ui,Jquery Ui Autocomplete,我有一个jqueryui自动完成代码,它从ajax请求中获取数据,当我获取数据时,结果已经放在自动完成附加的输入框中。我的问题是,我有一个其他的数据以及数据,将与自动完成的结果发布 我试图获取所有需要的数据,并将其与delimeters放在一个字符串中,以便在客户端拆分()。我想将其他数据保存在隐藏的文本字段中 这是我的密码 <div id="01ac091c834d81b41f0ef4b6eb09cde90bb9aa1a" style="display:none" title="

我有一个jqueryui自动完成代码,它从ajax请求中获取数据,当我获取数据时,结果已经放在自动完成附加的输入框中。我的问题是,我有一个其他的数据以及数据,将与自动完成的结果发布

我试图获取所有需要的数据,并将其与delimeters放在一个字符串中,以便在客户端拆分()。我想将其他数据保存在隐藏的文本字段中

这是我的密码

    <div id="01ac091c834d81b41f0ef4b6eb09cde90bb9aa1a" style="display:none" title="Add Member">
        Type the name of the member
        <br>
        <br>
        <div style="text-align:center">
            <input type="text" id="txtUserFind" size="35">
        </div>
        <input type="hidden" id="hidtxtUserFind-nickname">
        <input type="hidden" id="hidtxtUserFind-userhash">
        <input type="hidden" id="hidtxtUserFind-picture">
        <input type="hidden" id="hidtxtUserFind-sex">
    </div>
    <script type="text/javascript">
    head(function() {


        $(":button:contains('Select User')").attr("disabled","disabled").addClass("ui-state-disabled");

        $("#txtUserFind").keydown(function(){
            $(":button:contains('Select User')").attr("disabled","disabled").addClass("ui-state-disabled");
        });


        $("#txtUserFind").change(function(){

        var userdetails = $("#txtUserFind").val().split(";");
        alert($("#txtUserFind").val());

        /*
        0  profiles.nickname,
        1  profiles.firstname,
        2  profiles.surname,
        3  users.user_hash,
        4  profiles.sex,
        5  profiles.picture
        */

        $("input#hidtxtUserFind-nickname").val(userdetails[0]);
        $("input#txtUserFind").val(userdetails[1] + " " + userdetails[2]);
        $("input#hidtxtUserFind-userhash").val(userdetails[3].replace("u-",""));
        $("input#hidtxtUserFind-sex").val(userdetails[4]);
        if(userdetails.length > 5){
            $("input#hidtxtUserFind-picture").val(userdetails[5]);
        }   

        });

        $("<?php echo $tagmemberbtn; ?>").click(function(){
            $("#01ac091c834d81b41f0ef4b6eb09cde90bb9aa1a").dialog({
                modal:true,
                resizable: false,
                height:250,
                width:400,
                hide:"fade",
                open: function(event, ui){
                    searchdone = false;
                    $(":button:contains('Select User')").attr("disabled","disabled").addClass("ui-state-disabled");
                },
                beforeClose: function(event, ui){
                    $("#txtUserFind").val("");
                },
                buttons:{
                    "Select User":function(){
                        $(this).dialog("close");
                    },
                    "Close":function(){ 
                        searchdone = false;
                        $("#txtUserFind").val(""); 
                        $(this).dialog("close");                
                    }
                }
            });
        });

        $(function() {
            var cache = {},
            lastXhr;
            $("#txtUserFind").autocomplete({
                source:function(request,response) {
                    var term = request.term;
                    if ( term in cache ) {
                        response(cache[term]);
                        return;
                    }
                    lastXhr = $.getJSON(cvars.userburl+"getusers", request, function(data,status,xhr) {
                        stopAllAjaxRequest();
                        cache[ term ] = data;
                        if ( xhr === lastXhr ) {
                            response( data );
                        }
                    });
                },
                minLength: 1,
                select: function(event, ui) {

                    $(":button:contains('Select User')").removeAttr("disabled").removeClass("ui-state-disabled");
                }
            }).data("autocomplete")._renderItem = function(ul,item){
                if(item.picture==null){
                    //know if girl or boy
                    if(item.sex<=0){
                        item.picture = cvars.cthemeimg + "noimagemale.jpg";
                    }
                    else{
                        item.picture = cvars.cthemeimg + "noimagefemale.jpg"; 
                    }
                }
                else{
                    item.picture = cvars.gresuser + "hash=" + item.user_hash.replace("u-","") +"&file="+item.picture.replace("f-","");
                }
                var inner_html = '<a><div class="autocomplete-users-list_item_container"><div class="autocomplete-users-image"><img src="' + item.picture + '" height="35" width="35"></div><div class="label">' + item.nickname + '</div><div class="autocomplete-users-description">' + item.firstname + " " + item.surname + '</div></div></a>';
                return $("<li></li>")
                    .data("item.autocomplete",item)
                    .append(inner_html)
                    .appendTo(ul);
            };
        });
});

键入成员的名称


总目(职能({ $(“:按钮:包含('Select User')).attr(“已禁用”、“已禁用”).addClass(“ui状态已禁用”); $(“#txtUserFind”).keydown(函数(){ $(“:按钮:包含('Select User')).attr(“已禁用”、“已禁用”).addClass(“ui状态已禁用”); }); $(“#txtUserFind”).change(函数(){ var userdetails=$(“#txtUserFind”).val().split(“;”); 警报($(“#txtUserFind”).val()); /* 0.0.0昵称, 1.firstname, 2.姓氏, 3 users.user\u散列, 4.性别, 5.图片 */ $(“输入#hidtxtxtersfind昵称”).val(userdetails[0]); $(“input#txtUserFind”).val(userdetails[1]+“”+userdetails[2]); $($input#hidtxtUserFind userhash”).val(userdetails[3]。替换(“u-”,“”); $(“输入#hidtxtxtersfind sex”).val(userdetails[4]); 如果(userdetails.length>5){ $(“input#hidtxtxtersfind picture”).val(userdetails[5]); } }); $(“”)。单击(函数(){ $(“01ac091c834d81b41f0ef4b6eb09cde90bb9aa1a”)对话框({ 莫代尔:是的, 可调整大小:false, 身高:250, 宽度:400, 隐藏:“褪色”, 打开:功能(事件、用户界面){ searchdone=false; $(“:按钮:包含('Select User')).attr(“已禁用”、“已禁用”).addClass(“ui状态已禁用”); }, beforeClose:函数(事件、ui){ $(“#txtUserFind”).val(“”); }, 按钮:{ “选择用户”:函数(){ $(此).dialog(“关闭”); }, “关闭”:函数(){ searchdone=false; $(“#txtUserFind”).val(“”); $(此).dialog(“关闭”); } } }); }); $(函数(){ var cache={}, lastXhr; $(“#txtUserFind”).autocomplete({ 来源:功能(请求、响应){ var term=request.term; if(缓存中的术语){ 响应(缓存[术语]); 返回; } lastXhr=$.getJSON(cvars.userburl+“getusers”、请求、函数(数据、状态、xhr){ stopAllAjaxRequest(); 缓存[术语]=数据; 如果(xhr==lastXhr){ 答复(数据); } }); }, 最小长度:1, 选择:功能(事件、用户界面){ $(“:按钮:包含('Select User'))。removeAttr(“禁用”)。removeClass(“ui状态禁用”); } }).数据(“自动完成”)。\u renderItem=功能(ul,项目){ if(item.picture==null){ //知道是女孩还是男孩
如果(item.sex您的想法是正确的,那么必须使用回调作为
参数

如果你仔细阅读,它会说:

第三种变体是回调,它提供了最大的灵活性,并且 可用于将任何数据源连接到自动完成 获取两个参数:

一个请求对象,具有一个名为“term”的属性,该属性引用 到文本输入中当前的值。例如,当用户 在城市字段中输入“new yo”,自动完成项将等于 “新哟”

响应回调,它期望单个参数包含 向用户建议的数据。应根据 提供术语,并且可以采用上述任何格式 简单本地数据(带标签/值/两者的字符串数组或对象数组) 属性),这在为提供自定义源回调时非常重要 在请求过程中处理错误。您必须始终调用响应 即使遇到错误也会回调。这确保小部件 始终具有正确的状态

下面是我在演示中使用的一个示例实现:

$("#autocomplete").autocomplete({
    source: function(request, response) {
        $.ajax({
            url: "/echo/html/", // path to your script
            type: "POST",       // change if your script looks at query string
            data: {             // change variables that your script expects
                q: request.term
            },
            success: function(data) {
                                // this is where the "data" is processed
                                // for simplicity lets assume that data is a
                                // comma separated string where first value is
                                // the other value, rest is autocomplete data
                                // the data could also be JSON, XML, etc
                var values = data.split(",");
                $("<div/>").text("Other value: " + values.shift()).appendTo("body");
                response(values);
            },
            error: function() {
                response([]);   // remember to call response() even if ajax failed
            }
        });
    }
});
$(“#自动完成”).autocomplete({
来源:功能(请求、响应){
$.ajax({
url:“/echo/html/”,//脚本的路径
键入:“POST”//如果脚本查看查询字符串,则更改
数据:{//更改脚本所需的变量
问:请求.期限
},
成功:功能(数据){
//这是处理“数据”的地方
//为了简单起见,让我们假设数据是
//逗号分隔的字符串,其中第一个值为
//另一个值rest是自动完成数据
//数据也可以是JSON、XML等
var值=data.split(“,”);
$(“”).text(“其他值:”+values.shift()).appendTo(“正文”);
响应(值);
},
错误:函数()
$('#input_id').autocomplete({
    source:"www.example.com/somesuch",
    select: function(event, ui){
        var value = ui.item.value;
        valueArray = value.split('whatever delimiter here');
        //do what you will with the values
        ui.item.value = ui.item.label; //This ensures only the label is displayed after processing.
    }
});