从昨天开始,我一直在摸不着头脑,这是我无法解决的问题。我是Twitter Bootstrap的新手,直到昨天一切顺利。
我正在使用最新的JQuery v1.11.1和Twitter Bootstrap v3.3.1。昨天我从这里下载了Bootstrap Tags Input:http://timschlechter.github.io/bootstrap-tagsinput/examples/
该插件有效,我已经更改了CSS样式以匹配我的页面布局,但我遇到的问题是占位符属性在焦点时不会消失。如果我输入标签并添加逗号值,占位符将显示,直到我开始输入,然后它将再次消失。
我尝试使用JQuery onfocus函数在onfocus时删除属性,但它没有做任何事情。我想要实现的是,当onfocus时,占位符在那时甚至不显示模糊。
我的输入字段如下所示:
<input type="text" name="customer_tags" id="customer_tags" value="" placeholder="Enter you tags" data-role="tagsinput" required />
答案 0 :(得分:6)
两年后,但我找到了如何解决这个问题。首先,如果您检查DOM,您将看到一个新的输入文本,它继承了我们的占位符文本,但没有额外的函数onblur,onfocus,以前每个人都提到过。
<div class="bootstrap-tagsinput">
<input placeholder="text inherited from our input" size="23" type="text">
</div>
然后,要解决此问题,您必须创建一个jquery函数来指向该输入。像这样:
$('.bootstrap-tagsinput input').blur(function(){jQuery(this).attr('placeholder', '')})
使用类&#34; bootstrap-tagsinput&#34;指向元素然后&#34;输入&#34;里面的物体。如果您愿意,也可以添加.focus功能。在我的情况下,当用户离开对象并且输入标签看起来干净而没有占位符时起作用。
答案 1 :(得分:2)
答案 2 :(得分:0)
试试这个,我希望它有效:
<form>
<div>
<label for="name" class="left-label">Your Name</label>
<input type="text" class="example-two" placeholder="Enter you tags" id="name" name="name">
</div>
</form>
CSS:
[placeholder]:focus::-webkit-input-placeholder {
transition: opacity 0.5s 0.5s ease;
opacity: 0;
}
.example-two:focus::-webkit-input-placeholder {
transition: text-indent 0.5s 0.5s ease;
text-indent: -100%;
opacity: 1;
}
body {
}
form {
display: inline-block;
margin-top: 20px;
}
label {
display: block;
text-align: left;
font: bold 0.8em Sans-Serif;
text-transform: uppercase;
}
.left-label {
float: left;
padding: 8px 5px 0 0;
}
input[type=text] {
padding: 5px;
text-indent: 0;
}
form div {
margin: 20px;
clear: both;
text-align: left;
}
编辑: 在IE上工作: JSFiddle
答案 3 :(得分:0)
该插件的行为方式。一旦你点击&#34;输入&#34;或者&#34;逗号&#34;它会创建一个span标签(参见附图)并将输入移到右侧。所以现在输入没有价值,应该显示占位符。
In their docs it's mentioned [搜索confirmKeys]
在输入中键入时将添加标记的键码数组。 (默认值:[13,188],为ENTER和逗号)
更改确认键以在您键入comma
修改强>
在site上,我在控制台中尝试了以下方法并且它有效。
$('input').tagsinput({
confirmKeys: [13]
});
答案 4 :(得分:0)
我能够使用jquery快速修复。我想要的行为应该做两件事:
1)在我聚焦并开始输入后,在页面上删除占位符。所以我会在keyup上运行它。
$(document).on('keyup', '.bootstrap-tagsinput input', function(){
$(this).attr('placeholder', '')
})
2)如果输入中已经有标签,那么我显然不需要占位符。我在页面加载时运行它。
$('.labels').each(function(){
var len = $(this).tagsinput('items');
if(len){
var $input = $($(this).prev().children('input').get(0));
$input.attr('placeholder', '');
}
})
答案 5 :(得分:0)
以下代码适用于我的情况:
<input type="text" name="add_image_tags" id="add_image_tags" data-role="tagsinput"
class="form-control" placeholder="Enter tags" data-placeholder="Enter tags" value="" />
handlePlaceHolder(); //Call during page load
function handlePlaceHolder()
{
if($('#add_image_tags').val())
{
$('.bootstrap-tagsinput input').attr('placeholder', '');
}
else
{
$('.bootstrap-tagsinput input').attr('placeholder',$('#add_image_tags').attr('data-placeholder'));
}
}
$('#add_image_tags').on('itemRemoved', function(event) {
// event.item: contains the item
handlePlaceHolder();
});
$('#add_image_tags').on('itemAdded', function(event) {
// event.item: contains the item
handlePlaceHolder();
});
答案 6 :(得分:0)
就我而言,经过一点修改后,它运作正常。
$('#txtTimeSlot').on('change', function () {
var len = $(this).tagsinput('items').length;
if (len > 0) {
var $input = $($(this).prev().children('input').get(0));
$input.attr('placeholder', '');
} else {
var $input = $($(this).prev().children('input').get(0));
$input.attr('placeholder', $(this).attr('placeholder'));
}
});