Javascript jQuery ui自动完成在其他函数中获取选定项
我在jQuery autocomplete中遇到了一个问题,我试图获取输入的值,但得到了标签,但没有得到值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) { $
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');