2017-04-24 54 views
0

我想我的搜索形式与大写和小写工作。所以每当我输入东西是小写,这也将显示我的表我在寻找英寸我怎样才能让我的搜索形式工作,大写和小写

这里TE大写的结果是我的javascript

function searchFunction() { 
var searchText = document.getElementById('database_search_bar').value; 
var targetTable = document.getElementById('database_table'); 
var targetTableColCount; 

for (var rowIndex = 0; rowIndex < targetTable.rows.length; rowIndex++) { 
    var rowData = ''; 

    if (rowIndex == 0) { 
     targetTableColCount = targetTable.rows.item(rowIndex).cells.length; 
     continue; 
    } 

    for (var colIndex = 0; colIndex < targetTableColCount; colIndex++) { 
     rowData += targetTable.rows.item(rowIndex).cells.item(colIndex).textContent; 
    } 

    if (rowData.indexOf(searchText) == -1) 
     targetTable.rows.item(rowIndex).style.display = 'none'; 
    else 
     targetTable.rows.item(rowIndex).style.display = 'table-row'; 
} 

谁能帮助我?

回答

1

改变这一行:

if (rowData.indexOf(searchText) == -1) 

到:

if (rowData.toLowerCase().indexOf(searchText.toLowerCase()) == -1) 

这样,作为比较,您将只使用小写字符串。即如果searchText是“Lorem存有”和rowData是“我有LOREM IPSUM以内”,他们将成为“Lorem存有”和“我有内Lorem存有”分别 - 因此,他们会匹配。

String.prototype.toLowerCase() reference.

还要注意的是,在ES6你有String.prototype.includes()可能被用于你在做什么。它会读得更好一点 - 但目前在IE中不支持。

+0

谢谢!完美的作品! – robindehaan

+0

是的,我意识到。我评论快,对不起!但它现在起作用了。 – robindehaan

+0

@robindehaan很高兴它没有。如果你接受我的回答,我会顺便超过20K分! :D – kamituel

0

如果你想忽略的情况下,可能是你应该让两侧是大写或小写。

就你而言,你可以在rowDatasearchText上使用toUpperCase()toLowerCase()

var upperData = rowData.toUppercase(); 
var upperText = searchText.toUppercase(); 
if (upperData.indexOf(upperText) == -1) { 
    //Not Found 
} 
else { 
    //Found 
} 
0

这是一种替代方案:

诀窍是均质化的比较。

如何做到这一点同质化?

  • 只是转换的元素来比较同一类型。
  • 但他们都是字符串,是的,但Aa不同。所以,我们可以将所有或全部小写。但是,如何?
  • 使用toLowerCase()toUpperCase()()方法。

我创建了一个notFound()是小写rowDatasearchText,然后返回false如果是的indexOf否则-1将返回true。对不起,我花了很长时间才填满了国家和大陆的桌子。

var searchButton = document.getElementById('search_button'); 
 
searchButton.addEventListener('click', searchFunction) 
 

 
function searchFunction() { 
 
    var searchText = document.getElementById('database_search_bar').value; 
 
    var targetTable = document.getElementById('database_table'); 
 
    var notFoundText = document.getElementById('not_found'); 
 
    var targetTableColCount; 
 
    var hasResult = false; 
 
    
 
    notFoundText.innerHTML = ''; 
 
    for (var rowIndex = 0; rowIndex < targetTable.rows.length; rowIndex++) { 
 
    var rowData = ''; 
 

 
    if (rowIndex == 0) { 
 
     targetTableColCount = targetTable.rows.item(rowIndex).cells.length; 
 
     continue; 
 
    } 
 

 
    for (var colIndex = 0; colIndex < targetTableColCount; colIndex++) { 
 
     rowData += targetTable.rows.item(rowIndex).cells.item(colIndex).textContent; 
 
    } 
 

 
    if (notFound(rowData, searchText)) { 
 
     targetTable.rows.item(rowIndex).style.display = 'none'; 
 
    } else { 
 
     targetTable.rows.item(rowIndex).style.display = 'table-row'; 
 
     hasResult = true; 
 
    } 
 
    } 
 
    if (!hasResult){ 
 
    notFoundText.innerHTML = 'There are no results.'; 
 
    } 
 
} 
 

 
function notFound(rowData, searchText){ 
 
    return rowData.toLowerCase().indexOf(searchText.toLowerCase()) === -1; 
 
}
table td { 
 
width: 150px; 
 
}
Search Text: <input id="database_search_bar" type="text" name="fname"><input id="search_button" type="submit" value="Search"> 
 
<p></p> 
 
<table id="database_table" > 
 
    <tr> 
 
    <th>Country</th> 
 
    <th>Continent</th> 
 
    </tr> 
 
    <tr> 
 
    <td>Brazil</td> 
 
    <td>South America</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Jordan</td> 
 
    <td>Asia</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Mauritania</td> 
 
    <td>Africa</td> 
 
    </tr> 
 
    <tr> 
 
    <td>United States of America</td> 
 
    <td>North America</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Netherlands</td> 
 
    <td>Europe</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Oman</td> 
 
    <td>Asia</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Honduras</td> 
 
    <td>South America</td> 
 
    </tr> 
 
    <tr> 
 
    <td>Lithuania</td> 
 
    <td>Europe</td> 
 
    </tr> 
 
</table> 
 
<div id="not_found" ></div>

相关问题