jquery - 在 jquery ui / autocomplete / source 中使用选择器
问题描述
假设我有以下 HTML:
<div class="name">
First: <input type="text" name="firstName" class="firstName">
Last: <input type="text" name="lastName" class="lastName">
</div>
这是对应于该 HTML 的 JS:
$('.lastName').last().autocomplete({
source: function(request, response) {
var firstName = $('.firstName', $(this).closest('.name'));
var lastName = request.term;
console.log(firstName + ' ' + lastName);
}
});
我想让自动完成功能最接近源方法链接到.firstName
的.lastName
字段,但它不起作用。
从表面上看,如果这行不通,我可以附加某种唯一的 ID,.lastName
但如果我唯一可以访问的是request
,那我就不能简单地为元素添加一个data-whatever
属性。<input>
有任何想法吗?
这是我的 JS 小提琴:https ://jsfiddle.net/f86nLrq9/
解决方案
考虑以下内容:https ://jsfiddle.net/Twisty/39mrzowc/39/
JavaScript
$(function() {
$('.lastName:last').autocomplete({
source: function(request, response) {
var fName = $(this.element).prev().val();
console.log(fName, request.term);
response([]);
},
});
});
如果您检查this
,您将看到它是对自动完成实例(数据对象)的引用。大部分 Widget 都有对 Element 的引用,见:https ://api.jqueryui.com/jQuery.widget/
这意味着this
, 不是对元素的引用input.lastName
;因此,您使用的代码不起作用。您与此微小更改的相同代码也将起作用:https ://jsfiddle.net/Twisty/yucabv8m/1/
JavaScript
$('.lastName').last().autocomplete({
source: function(request, response) {
var firstName = $('.firstName', $(this.element).closest('.name')).val();
var lastName = request.term;
console.log(firstName + ' ' + lastName);
}
});
推荐阅读
- java - 如何完全禁用 JTextPane 的文本突出显示?
- laravel - 从 Laravel 中的 WITH Eloquent 中提取值
- tsql - SQL Server:如何自定义匹配时合并区域
- c++ - CPP 创建用于计算位置*速度协方差的变量
- asp.net-core - Automapper 将表映射到具有分组的嵌套类
- python - 熊猫:将单元格中的字典列表解压缩到列
- python - 从 Matplotlib 图中删除子图的列/行
- node.js - 有没有办法使用 npm Sequelize 向 SQL Server 插入超过 15 万条记录?
- sql - 在 SQL DEVELOPER 中获取日期之间的行时出现问题
- unity3d - 如何在 2d 游戏中统一制作 FPS 相机?