在您的示例中,您只允许 3 个输入,因为您有 3 个输入框,当这些输入框中的任何一个更改您的标签时,您的标签就会被转移到跨度。
现在,无论输入多少,听起来您都希望允许多个条目。你可以尝试一些简单的东西,比如下面的小提琴。
http://jsfiddle.net/K2g4z/
html:
<div>
<strong>Enter your tag and click add</strong>
<br/>
<input type="text" id="tagEntry" />
<button id="tagAdd">Add</button>
</div>
<div>
<strong>Entered Tags</strong>
<br/>
<input type="text" id="tagsEntered" />
</div>
Javascript:
var tags = [];
$(function() {
$('#tagAdd').click(function(){
//get the tag value and trim the spaces
var tVal = $('#tagEntry').val().trim();
if(tVal == '')
return;
//reset the entry box
$('#tagEntry').val('');
//verify tag not already saved
for(var i=0;i<tags.length;i++)
if(tags[i] == tVal)
return;
//add the tag to the array
tags.push(tVal);
//set the tags entry box
$('#tagsEntered').val(tags.join(', '));
});
});
更新:
JSFiddle 链接http://jsfiddle.net/K2g4z/1/现在支持根据需要使用多个输入。为了实现这一点,而不是选择元素 ID,我们绑定到一个类名。给定以下 Html。
<div>
<strong>Enter your tag and click add</strong>
<br/>
<strong>Tag 1</strong>
<input type="text" id="tagEntry" class="tagEntry" />
<br/>
<strong>Tag 2</strong>
<input type="text" class="tagEntry" />
<br/>
<strong>Tag 3</strong>
<input type="text" class="tagEntry" />
<br/>
<strong>Tag 4</strong>
<input type="text" class="tagEntry" />
<br/>
<strong>Tag 5</strong>
<input type="text" class="tagEntry" />
</div>
<div>
<strong>Entered Tags</strong>
<br/>
<input type="text" id="tagsEntered" />
</div>
所有的标签输入框都有一个类,tagEntry
现在这个类将成为我们的选择器。使用下面的 JS,我们可以将 blur 事件绑定到每个具有 this 类的标签,tagEntry.
现在每次输入更改时都会更新标签框。
var tags = [];
$(function() {
$('.tagEntry').blur(function(){
//get the tag value and trim the spaces
var tVal = $(this).val().trim();
if(tVal == '')
return;
//reset the entry box
$(this).val('');
//verify tag not already saved
for(var i=0;i<tags.length;i++)
if(tags[i] == tVal)
return;
//add the tag to the array
tags.push(tVal);
//set the tags entry box
$('#tagsEntered').val(tags.join(', '));
});
});
如您所见,我们的处理程序绑定到所有输入,因为任何输入接收到模糊事件,提取标签的方法都会被执行。