我试图建议用户在textarea输入@
的人的名字。以下是我迄今所做的:如何在js数组中搜索?
var Names = $('td').map(function() { return $(this).text(); }).get();
function SuggestPeople() {
var $textarea = $('.TxtArea');
var textarea = $textarea[0];
var sel = $textarea.getSelection();
var val = textarea.value;
var pos = sel.start;
if(val.substr(pos-1,1) == '@'){
for (var i = 0; i < Names.length; i++) {
\t Names[i] = "<span>" + Names[i] + "</span>";
}
$('.SuggestPeople').html(Names);
} else {
$('.SuggestPeople').html('');
}
}
$('.TxtArea').on('keydown click', function(e) {
// e.preventDefault();
SuggestPeople();
});
table{
display:none;
}
div{
background-color:#eee;
min-height: 20px;
width: 200px;
padding-top:5px;
margin-bottom: 3px;
}
div > span{
border: 1px solid gray;
margin: 0 3px;
}
textarea{
width: 195px;
height: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rangyinputs.googlecode.com/svn/trunk/rangyinputs_jquery.min.js"></script>
<table>
<tr>
<td>Jack</td>
<td>Peter</td>
<td>Barmar</td>
</tr>
</table>
<div class="SuggestPeople"></div>
<textarea class="TxtArea"></textarea>
在上面的代码,它表明所有名称(这是存在数组中)用户。但实际上,我需要改进它,只是建议那些用户在@
之后写入的名称。我怎样才能做到这一点?我想要的东西就像stackoverflow。
使用'.getSelection()'的目的是什么? – guest271314
@ guest271314您链接的内容非常接近我需要的内容。 '.getSelection()'让我们知道文字写作符号的位置*(我的意思是什么在输入中闪烁)* – stack