2010-06-16 53 views
2

,我们通过调用函数。结果这样jquery的自动完成功能单击使用jQuery自动完成获取隐藏的价值

$("#suggest").result(function(event, data, formatted) { 
    $('#hidden').val(data[1]); 
}); 

获取隐藏的价值,当我们选择从自动提示列表,然后按进入选项这是唯一有用的。我需要的是通过输入完整的单词而不选择它并单击确定按钮来输入选项?但我总是变得空虚。

<input type="text" id="suggest" /> 
<input type="button" value="Ok" onclick="GetValue()" /> 
<input type="hidden" id="hidden"/> 
function GetValue() 
{ 
    //get hidden field value - getting empty 
    var hid=document.getElementById('hidden').value; 
} 
+0

你有没有试过'alert(hid);'? – Reigel 2010-06-16 08:00:46

回答

1

编辑:根据您的意见,你需要做这样的事情:

var users = [ {value: "John", id: 1}, {value: "George", id: 2}, 
       {value: "Jim", id: 3} ]; 

var usersArray = $.map(users, function(el) { return el.value; }); 


$(function(){ 

    $("#suggest").autocomplete(usersArray); 

    // This handles an autocomplete selection 
    $("#suggest").result(function(event, data, formatted) { 
    UpdateValue(); 
    }); 

    // This handles the manual entry case 
    $("#suggest").keyup(function() { 
    UpdateValue(); 
    }); 

}); 

function UpdateValue() 
{ 
    var name=$("#suggest").val(); 
    $("#DebugField").text(name); 
    $.each(users, function(n, item) { 
     if (item.value == name) { 
      $('#hidden').val(item.id); 
      $("#DebugField").text(item.id); 
     } 
    }); 
} 


function GetValue() 
{ 
    //get hidden field value - getting empty 
    var hid=$('#hidden').val(); 
    alert(hid); 
    return false; 
} 

看到它运行here

+0

谢谢,但这会给文本框的值,在自动提示列表中的bcos im显示用户名和后端即时通讯将其用户ID存储在隐藏字段中。我需要用户按钮onclick按钮 – gabriel 2010-06-16 08:51:49

+0

上述代码将更新隐藏字段的值,无论何时自动填充框的值会更改,无论是通过键入还是自动完成选择。 GetValue函数不需要改变。看到它运行在http://jsbin.com/oxopa3 – kgiannakakis 2010-06-16 09:33:29

+0

是的,它会更新隐藏的字段值。但我的意思是说即时通讯显示autosuggest列表的“用户”,并在后端每个用户有他们的用户名,所以在隐藏的领域,我需要“用户名”而不是“用户名” – gabriel 2010-06-16 09:39:34

0

算法:

ONSELECT:

先决条件:确保你成功
获得该项目(键,值)
存储返回标签和值{人名和人的ID}值在一个变量中。 {a = item.value}


现在将项目值更改为item的标签{item.label = item.value} 使用该值将其设置为一些隐藏变量,如document.personform.hiddenfield = a。
然后提交表单或通过ajax发送。