将字符串中的前N个字母加粗?

时间:2011-06-16 20:22:41

标签: javascript jquery

我正在尝试制作一个自动填充表单,在您键入时会粗体显示结果中的字母。

我所做的功能不起作用:

function setBold () {   

 var text = $('input#auto_results').val();
 var text_length = text.length;

    e = $('.result').html();
    r = e.replace("<b>", "");
    d = r.replace("</b>", "");
    n = d.substr(0, text_length);
    q = n.bold();
    r = d.length - text_length;
    m = d.substr(text_length, r);

    $('.result').html(q+m);
}

因为如果您有多个结果:

<li class='result'>text</li>
<li class='result'>texter</li>
<li class='result'>textes</li>
<li class='result'>textli</li>
<li class='result'>textwe</li>

它用第一个结果的粗体版本替换结果中的文本。

我想如何在列表中加粗前N个字母:

<li class='result'>textes</li>
<li class='result'>textli</li>
<li class='result'>textwe</li>

使用javascript和/或jquery。

1 个答案:

答案 0 :(得分:2)

html()与函数回调一起使用,如下所示:

function setBold () {   

 var text = $('input#auto_results').val();
 var text_length = text.length;

    $('.result').html(function(i,e){
       r = e.replace("<b>", "");
    d = r.replace("</b>", "");
    n = d.substr(0, text_length);
    q = n.bold();
    r = d.length - text_length;
    m = d.substr(text_length, r); 
        return q+m;
    });
}

示例:http://jsfiddle.net/niklasvh/rfwYb/