javascript - 如何在输入字段中使用 bootstrap 4 制作芯片
问题描述
我正在尝试使用下拉菜单制作和输入字段,输入字段type=email
在下拉菜单中我正在从我的数据库中获取邮件ID该输入字段但下拉菜单不应关闭,因为它是一个多选下拉菜单,当用户从下拉菜单中聚焦时它会关闭
当用户选择任何下拉菜单时,该选项应该被选中或选中
在该输入字段中,当我们输入多个邮件 ID 时,它可以作为芯片或令牌出现在 gmail 中
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.bundle.min.js"></script>
<div class="input-group mt-3 mb-3">
<input type="email" class="form-control" placeholder="mail id">
<div class="input-group-prepend">
<button type="button" class="btn btn-outline-secondary dropdown-toggle" data-toggle="dropdown">
Email id
</button>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">abc@gmail.com</a>
<a class="dropdown-item" href="#">egf@gmail.com</a>
<a class="dropdown-item" href="#">123@gmail.com</a>
</div>
</div>
</div>
并且在输入字段中电子邮件应该是chips
解决方案
var selected = [];
var availableTags = [
"abc@gmail.com",
"abc1@gmail.com",
"abc2@gmail.com",
"abc3@gmail.com",
"abc4@gmail.com"
];
$( function() {
$("#tags").autocomplete({
source: availableTags,
select: function( event, ui){
var value = ui.item.value;
selected.push(value);
refreshDiv();
var i = availableTags.indexOf(value);
availableTags.splice(i, 1);
event.preventDefault();
$("#tags").focusout();
$("#tags").val('');
}
});
});
function refreshDiv(){
$("#emails").val(selected.join(','));
var email_html = selected.map(function(f, i){
return "<span class='btn btn-info btn-sm' style='margin: 3px;'>"+f+" <span onclick=\"removeEmail('"+f+"')\" style='color:red'>x</span></span>";
});
$("#email-html").html(email_html);
}
function removeEmail(email){
availableTags.push(email);
var i = selected.indexOf(email);
selected.splice(i, 1);
refreshDiv();
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Autocomplete - Default functionality</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<div class="row">
<div class="col-md-3">
<div id="email-html"></div>
<input type="hidden" name="emails" id="emails"/>
</div>
<div class="col-md-3">
<div class="ui-widget">
<input id="tags">
</div>
</div>
</div>
</body>
</html>
推荐阅读
- c++ - c++ 程序 (.cpp) 如何与 header(.h) 和 libtool (.la) 一起工作?
- javascript - 从 Node 获取 api 数据
- sql-server - SQL Server Reporting Services - FQDN 您无权查看此文件夹
- windbg - NTDLL symbols available but !address does not work
- c# - C# DateTime.Parse(String) 在不同的系统中返回不同的值
- swift - 我们如何在 ios 应用程序中使用空白屏幕操作屏幕截图?
- flutter - 控制要从中选择的按钮的顺序
- javascript - 如何解决发送消息方法的问题?
- node.js - nestjs、GRPC 服务器和微服务架构
- javascript - 为什么需要在对象中的函数中的 if 语句内部而不是外部?JavaScript