2011-06-16 80 views
2

我正在嘗試製作一個自動完成表單,可以在您輸入時在結果中加粗字母。使字符串中的前N個字母變爲粗體?

我已經無法正常工作的功能:

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的。

回答

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/

+0

哦,是的回調。感謝您將它添加到我的功能 – TaylorMac 2011-06-16 20:31:29

+0

它會讓我接受 – TaylorMac 2011-06-16 20:31:39

相關問題