Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery ui自动完成在其他函数中获取选定项_Javascript_Jquery_User Interface_Autocomplete - Fatal编程技术网

Javascript jQuery ui自动完成在其他函数中获取选定项

Javascript jQuery ui自动完成在其他函数中获取选定项,javascript,jquery,user-interface,autocomplete,Javascript,Jquery,User Interface,Autocomplete,我在jQuery autocomplete中遇到了一个问题,我试图获取输入的值,但得到了标签,但没有得到值 var listeClients = [{"value":1,"label":"Orange"},{"value":2,"label":"Blue"}]; $( "#site_client_first" ).autocomplete({ source: listeClients, select: function (event, ui) { $

我在jQuery autocomplete中遇到了一个问题,我试图获取输入的值,但得到了标签,但没有得到值

  var listeClients = [{"value":1,"label":"Orange"},{"value":2,"label":"Blue"}];
  $( "#site_client_first" ).autocomplete({
     source: listeClients,
     select: function (event, ui) {
         $("#site_client_first").val(ui.item.label);
         return false;
  }
为了获得我使用的值:

$("#site_client_first").val();

如何获得价值


感谢advance=)

在自动完成的select事件中,您将标签设置为元素#site_client_first的value属性,即此处$(“#site_client_first”).val(ui.item.label)。因此,当您试图通过分配$(“#site_client_first”).val()来设置span的innerHTML时,您将始终获得标签,而不是item.value

请尝试下面的代码。我在$(“#site_client_first”)中添加了一个属性'itemValue'。这将保存项目的值,$(“#site_client_first”).val()将保存项目的标签

在设置span innerhtml时,可以分配$(“#site_client_first”).attr(“itemValue”),这是项目的值

<input class="form-control" name="site[client]" id="site_client_first"  itemValue="100" /> 

问题是您试图使用
输入
元素作为元素

选择
不同,
输入
的值只是写入其中的内容

自动完成
插件的默认行为是显示给定
标签
作为建议,当您选择其中一个标签时,它会在
输入中设置相应的
。通过将
输入的
标签设置为
,您在下面的代码中覆盖了此功能:

select: function (event, ui) {
     $("#site_client_first").val(ui.item.label);
     return false;
}
如果要删除上面的代码段,您会注意到,
value
字段将在选择选项后写入
input
元素

解决方案1

我建议将
输入
元素替换为
选择
元素。我认为这更适合你的需要。如果您需要搜索这些选项,您可能需要使用或之类的插件

解决方案2

如果您喜欢将
输入
自动完成
一起使用,请在
选择
回调中将该值设置为额外属性

select: function (event, ui) {
    $("#site_client_first").val(ui.item.label); // what the user sees
    $("#site_client_first").attr('data-realValue', ui.item.value); // value is hidden
    return false;
}
您可以使用

$("#site_client_first").attr('data-realValue');

演示:

您的代码应该按预期工作
.val()
是返回值的正确方法。你能在中重现这个问题吗?我试过了,但不起作用@NicolasCasbridens:如果您在JSFIDLE中将“Load Type”选项设置为“No wrap in
”,一切都会正常工作:@AndrewWhitaker谢谢。这是我第一次使用JSFIDLE ^^^我是如何得到值而没有标签的?很好。这是一个很好的解决方案,非常感谢您的解释;)比如说@Alexandru Severin,它在工作。这是一个很好的解决方案,非常感谢您的解释;)
select: function (event, ui) {
    $("#site_client_first").val(ui.item.label); // what the user sees
    $("#site_client_first").attr('data-realValue', ui.item.value); // value is hidden
    return false;
}
$("#site_client_first").attr('data-realValue');