2017-05-08 8 views
0

Ich bin in der Lage, den Eingabewert mit der span übereinstimmen; Ich soll jedoch nur den ersten Bereich in der Liste abrufen, mit dem ich vergleiche. Ich muss mit beiden Listen vergleichen. Wenn die Eingabe einem Listenelement entspricht, sollte es wahr sein. Ich bekomme nur einen Treffer für den ersten Wert.Matching Eingabewert mit Text innerhalb der Spanne

HTML

<input id="search" type="text" class="input"> 
<ul>              <li id="111" class="active" style="display: list-item;"><a href="" onclick="return false;"><span style="display:none">111</span><span style="display: inline;">1-1-1</span></a></li> 
<li id="222" style="display: list-item;"><a href="" onclick="return false;"><span style="display:none">222</span><span style="display: inline;">2-2-2</span></a></li> 
</ul> 

JS

$('#search').on('input',function(){   

    if($('#search').val() != $('ul li a span:eq(0)').text()){ 
     return console.log('false') 
    } 
    else if($('#search').val() == $('ul li a span:eq(0)').text()) { return console.log ('true') } 

}); 

jsfiddle

Antwort

2

Ich glaube, dass, wenn Sie .text() auf einer Liste von Elementen nennen es den Text des ersten Elements zurück. Sie müssen also die Spannen durchlaufen, an denen Sie interessiert sind, und sie überprüfen. Hier

ein Beispiel:

$('#search').on('input',function(){ 
    var found = false; 
    $('ul li a span:first-child').each(function (i, el){ 
    if ($(el).text() == $('#search').val()) { 
     found = true; 
     return; 
    } 
    }) 
    console.log(found); 
}); 
0

Oder könnten Sie alle HTML-Tags mit regex abschneiden und den Inhalt suchen.

function noTags(body) { 
    var regex = /(<([^>]+)>)/ig; 
    return body.replace(regex, ""); 
} 
Verwandte Themen