2017-05-08 78 views
0

我可以将输入值与范围匹配;然而,我只是要检索我比较的列表中的第一个跨度。我需要比较两个列表项目。如果输入等于任一列表项,则它应该是真实的。我只获得第一个值的匹配。将输入值与范围内的文本进行匹配

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

回答

2

我认为,当你的元素列表上称之为.text()它将返回的第一个元素的文本。所以你需要遍历你感兴趣的跨度并检查每个跨度。

下面是一个例子:

$('#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

或者,你可以剪掉所有的HTML标签用正则表达式和搜索内容。

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