【问题标题】:jQuery highlightTextarea script won't work with variable as parameterjQuery highlightTextarea 脚本不能使用变量作为参数
【发布时间】:2013-12-01 10:36:54
【问题描述】:

我有一个 PHP 数组中的垃圾邮件列表,用于检查用户输入。如果有任何匹配,则匹配的垃圾邮件单词会通过 AJAX 从我的 PHP 验证脚本发送到 jQuery highlightTextarea 脚本 (http://www.strangeplanet.fr/work/jquery-highlighttextarea/)。这个 jQuery 脚本应该在输入文本区域中突出显示这些垃圾邮件单词,因此用户可以直接看到问题所在。为此,脚本有一个选项“words:”,它接受您自己的垃圾邮件列表,格式为:

$(document).ready(function() {          
    $("textarea").highlightTextarea({
        words: ["spam1","spam2", "..."]
    });

当我直接输入单词时,它可以工作,如上面的代码所示,但我想将数组(或字符串或其他)与我的 AJAX 请求中的所有垃圾邮件单词作为参数传递给该函数。我试过这个:

$.each(msg.errors,function(k,v){
    if (k!='trash') {...} 
    else {trash = '["' + v.join('","') +'"]'}
});             
$(document).ready(function() {
    $("textarea").highlightTextarea({
    words: trash
});

textarea 字段中的对应词被标记为正常,但所有其他包含检测到的垃圾邮件词使用的任何字母的文本段落也是如此。当我提醒字符串(或对象??)alert(trash); 我得到["spam1","spam2"]。所以我想我可以简单地将“垃圾”作为参数附加到表单中:words: trash ,这与:words: ["spam1","spam2", "..."] 显然不是。有什么建议?

【问题讨论】:

  • 您传递的是字符串,而不是数组。尝试构建一个实际的数组(可以使用[] 和push(),也可以使用map(),您认为合适)。
  • 你可以使用,$("textarea").highlightTextarea('setWords', ['array val','array val']);
  • @BharathRallapalli 我试过$(document).ready(function() { $("textarea").highlightTextarea('words', [ "spam1","spam2" ]); }); 只是想看看它是否有效,但不幸的是它没有。脚本似乎以words: ["spam1","spam2", "..."] 的形式将其参数排除在外?
  • @FrédéricHamidi, @BharathRallapalli 谢谢你们。我只需要这样做:$(document).ready(function() { $("textarea").highlightTextarea({words: v}); }); 它一直在那里,只是没看到。

标签: jquery ajax object highlight


【解决方案1】:

我遇到了同样的问题,请确保您在 jquery 中的 ajax 请求返回 json 信息,对我来说问题是我的对象看起来像这样,确保我的帖子响应是 json 为我解决了这个问题,但这里有一个演示我所看到的。

{
   words: "["blue","red","white"]"
}

什么时候应该是这样的

{
   words: ["blue","red","white"]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 2020-04-18
    • 2016-08-10
    • 1970-01-01
    相关资源
    最近更新 更多