Jquery Tag-it - 如何在焦点上做一个动作
Jquery Tag-it - How to do an action on focus
我正在使用 Jquery 插件 Tag-it,我想在输入处于焦点时执行一个操作。
我试过了:
$('#tags').tagit().focus(function() {
// do something...
});
$('#tags').focus(function() {
// do something...
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/js/tag-it.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/jquery.tagit.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/tagit.ui-zendesk.min.css" rel="stylesheet"/>
<input id="tags" name="tags" type="text" class="form-control" autocomplete="off">
它不起作用,有什么想法吗?
提前致谢
如果您检查渲染后的 HTML,您会发现焦点不是原始输入。现在您可以将事件绑定到相关元素:
$('#tags').tagit().next('ul').find('li input.ui-widget-content').focus(function(e) {
if (!e.originalEvent) return;
// code your logic here
console.log('focus');
});
请注意,此插件触发器专注于自定义插件元素,因此您必须对其进行过滤以避免双重处理程序调用。作为旁注,您可以使用 e.isTrigger
作为检查,但它是 not recommanded.
$("#tags").tagit().next('ul').find('li input.ui-widget-content').focus(function(e) {
if (!e.originalEvent) return;
// code your logic here
console.log('focus');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/js/tag-it.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/jquery.tagit.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/tagit.ui-zendesk.min.css" rel="stylesheet" />
<input id="tags" name="tags" type="text" class="form-control" autocomplete="off">
我正在使用 Jquery 插件 Tag-it,我想在输入处于焦点时执行一个操作。
我试过了:
$('#tags').tagit().focus(function() {
// do something...
});
$('#tags').focus(function() {
// do something...
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/js/tag-it.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/jquery.tagit.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/tagit.ui-zendesk.min.css" rel="stylesheet"/>
<input id="tags" name="tags" type="text" class="form-control" autocomplete="off">
它不起作用,有什么想法吗?
提前致谢
如果您检查渲染后的 HTML,您会发现焦点不是原始输入。现在您可以将事件绑定到相关元素:
$('#tags').tagit().next('ul').find('li input.ui-widget-content').focus(function(e) {
if (!e.originalEvent) return;
// code your logic here
console.log('focus');
});
请注意,此插件触发器专注于自定义插件元素,因此您必须对其进行过滤以避免双重处理程序调用。作为旁注,您可以使用 e.isTrigger
作为检查,但它是 not recommanded.
$("#tags").tagit().next('ul').find('li input.ui-widget-content').focus(function(e) {
if (!e.originalEvent) return;
// code your logic here
console.log('focus');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/js/tag-it.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/jquery.tagit.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/tag-it/2.0/css/tagit.ui-zendesk.min.css" rel="stylesheet" />
<input id="tags" name="tags" type="text" class="form-control" autocomplete="off">