引导程序/标记输入应用于所有表单字段/未正确显示
Bootstrap/TagsInput Applying To All Form Fields/Not Displayed Correctly
我在理解如何将Bootstrap/TagsInput正确应用于表单时遇到问题。
我的目标是有一个表单,其中一个字段使用TagsInput,另一个字段不使用它
有两个问题:
- TagsInput似乎适用于任何表单字段,而不仅仅是我用data role="TagsInput"指定的字段
- 标签不会停留在表单字段内,因为表单字段总是"刚好在"标签的前面
这是代码:
var citynames = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: 'http://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/assets/citynames.json',
filter: function(list) {
return $.map(list, function(cityname) {
return { name: cityname }; });
}
}
});
citynames.initialize();
$('input').tagsinput({
typeaheadjs: {
name: 'citynames',
displayKey: 'name',
valueKey: 'name',
source: citynames.ttAdapter()
}
});
.tt-query {
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.tt-hint {
color: #999
}
.tt-menu { /* used to be tt-dropdown-menu in older versions */
width: 422px;
margin-top: 4px;
padding: 4px 0;
background-color: #fff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
-webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
-moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
box-shadow: 0 5px 10px rgba(0,0,0,.2);
}
.tt-suggestion {
padding: 3px 20px;
line-height: 24px;
}
.tt-suggestion.tt-cursor,.tt-suggestion:hover {
color: #fff;
background-color: #0097cf;
}
.tt-suggestion p {
margin: 0;
}
.bootstrap-tagsinput{
width: 40%;
display: block;
}
.twitter-typeahead {
width: 40%;
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap-theme.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="http://bootstrap-tagsinput.github.io/bootstrap-tagsinput/dist/bootstrap-tagsinput.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/rainbow/1.2.0/themes/github.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.11.1/typeahead.bundle.js"></script>
<form class="form-inline" role="form" action="/items/create", method="post">
<div class="form-group">
<label for="title">Title (should be no tags input):</label>
<input type="text" class="form-control" id="title" name="title">
<div class="form-group">
<label for="tags"> Tags (should have tags input):</label>
<input type="text" class="form-control" id="tags" name="tags" data-role="tagsinput">
<button type="submit" class="btn btn-default"> Submit</button>
</form>
这是一个带有我的代码的JSFiddle:https://jsfiddle.net/gg6rwmwa/1/
我是JavaScript/CSS的新手,所以任何关于我做错什么的指导都将不胜感激。
我发现了一些类似的stackoverflow问题,但似乎没有一个完全符合这两点(并提供了答案)。
谢谢你的帮助!
-
您在"form-inline"类中创建了两个div,它们都具有action="/items/create"和method="post"属性。要更正此问题,只需将不同的字段分开,如下所示。
-
这可能是您正在使用的CDN的问题。我在formvalidation.io上找到了一个不同的,似乎运行得很好。你可以根据自己的需要进行更改。
编辑
我们还需要选择标签输入表单,并在其中进行相关的javascript处理。每个输入字段都变成了标记输入字段,因为我们在进行操作之前忘记添加$("#TagsInputForm")选择器。
HTML:
<link rel="stylesheet" href="//cdn.jsdelivr.net/bootstrap.tagsinput/0.4.2/bootstrap-tagsinput.css" />
<script src="//cdn.jsdelivr.net/bootstrap.tagsinput/0.4.2/bootstrap-tagsinput.min.js"></script>
<form>
<fieldset class="form-group">
<label for="formGroupExample">No tags</label>
<input type="text" class="form-control" id="formGroupExample">
</fieldset>
<fieldset class="form-group">
<label for="formGroupExample2">No tags</label>
<input type="text" class="form-control" id="formGroupExample2">
</fieldset>
</form>
<form id="TagsInputForm" method="post" class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">Tag input</label>
<div class="col-sm-10">
<input type="text" name="tags" class="form-control"
value="Tag" data-role="tagsinput" />
</div>
</div>
</form>
</form>
JS:
$(document).ready(function () {
$('#TagsInputForm') {
var citynames = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: 'https://bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/assets/citynames.json',
filter: function(list) {
return $.map(list, function(cityname) {
return { name: cityname }; });
}
}
});
citynames.initialize();
$('input').tagsinput({
typeaheadjs: {
name: 'citynames',
displayKey: 'name',
valueKey: 'name',
source: citynames.ttAdapter()
}}
});
});
相关文章:
- SIMPLE Javascript代码,用于显示谷歌电子表格中单个字段的数据
- 根据页面加载时的单选按钮选择显示某些字段
- 如果选择单选按钮,则显示字段
- 如何在html中将密码字段显示为秒后的星号
- 提交表单时,显示或识别隐藏的必填字段并将其集中
- 仅当选择了特定选项时才显示输入字段
- 我有一个字段计算,如果结果低于 60,则需要显示最小值
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- 使用SAPUI5中的“文本”字段显示正确的“日期”
- jQuery Mobile根据选择字段显示/隐藏表单输入
- 使用JS或Jquery-是否可以有一个只读字段,该字段显示有掩码,但在复制时不显示掩码值
- 无法根据下拉列表或输入字段显示表中的行数
- 当我们双击输入字段时,我不希望输入字段显示已经输入的数据.我该怎么办呢?
- 字段显示为浏览器自动填充,使用js访问时为空白
- 如何在密码字段显示4位数字
- 使用CSS和Jquery使字段显示
- jQuery显示/隐藏选项选择字段显示框,我试图显示在所有其他选项
- 用javascript从上传文件字段显示文件名
- 只在上传字段显示文件名
- 替换输入字段's显示