我正在研究项目的评论模块,
场景:当用户按下 @ 字符并键入类似 @jasmine 的系统时,应该在 @旁边获取该特定关键字字符 我正在实现这个场景并得到像这样的关键词,
$('#commen-text').keyup(function (e) {
if (e.which === 50 && e.next()) {
var key = $(e.next());
var filters = {};
filters['keyword'] = key;
$.ajax({
url: siteUrl + "filter/user",
data: {filters: filters},
type: "get",
success: function (output) {
return;
alert(output);
}
});
}
});
但它给了我以下错误
未捕获的TypeError:e.next不是函数
请建议我在这方面该怎么办
答案 0 :(得分:1)
我已经对您的代码进行了一些修改,但我认为它可以解决问题:
$('#commen-text').keyup(function(e) {
var current_text = $(this).val();
if (e.which === 13 && current_text.indexOf("@") >= 0) {
var key = current_text.split('@')[1][0];
console.log(key);
var filters = {};
filters['keyword'] = key;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="w100"> <textarea placeholder="Enter your comment here" id="commen-text"></textarea> </div>
<!--w100-->
答案 1 :(得分:1)
我稍微修改了你的代码,e.next不是一个函数。这里e
指的是事件不是元素
$('#commen-text').keyup(function (e) {
if (this.value.indexOf("@") != -1 ) {
var key = this.value.substring(1, this.value.length);
debugger;
var filters = {};
filters['keyword'] = key;
$.ajax({
url: siteUrl + "filter/user",
data: {filters: filters},
type: "get",
success: function (output) {
return;
alert(output);
}
});
}
});
答案 2 :(得分:1)
试试这个..我用indexOf来搜索&#39; @&#39;登录输入字段..
编辑:仅在@
符号后才捕获mod ...尝试将keyup
替换为setTimeout
,例如:500ms然后拉ajax
正如我所看到的那样,你必须注意“松散焦点”&#39;或类似的事件,以了解用户什么时候离开textarea,然后建立filters
关键字..然后触发ajax,而不是更早,因为你会很快发射它我猜...
$('#commen-text').keyup(function (e) {
var key = $(this).val();
if (key.indexOf('@') > -1 ) {
console.log( key.split('@')[1] );
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="w100"> <textarea placeholder="Enter your comment here" id="commen-text"></textarea> </div>
&#13;
答案 3 :(得分:1)
对于多个 @
var names={};
$("#names").focusout(function(){
$(this).val().split(" ").forEach(function(value){
value.split("@").slice(1).forEach(function(secValue){
names[secValue]=secValue
});
});
console.log(Object.keys(names));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="names"/>