2014-01-31 44 views
0

我有超過2000個數據的html表也有代碼爲這個html search.when活的javascript搜索當我輸入文本框中的第一個字符javascript開始搜索,我想要什麼如果角色等級達到三年多我想執行搜索功能,如果字符是以下三無搜索function.below是我的javascript代碼,任何人都可以指導我該怎麼辦呢.thanks在輸入上執行基於javascript的搜索到達3個字符

的JavaScript

<script type="text/javascript"> 

function searchRows(CPH_GridView1) { 
var tbl = document.getElementById(CPH_GridView1); 
var headRow = tbl.rows[0]; 
var arrayOfHTxt = new Array(); 
var arrayOfHtxtCellIndex = new Array(); 

for (var v = 0; v < headRow.cells.length; v++) { 
if (headRow.cells[v].getElementsByTagName('input')[0]) { 
var Htxtbox = headRow.cells[v].getElementsByTagName('input')[0]; 
    if (Htxtbox.value.replace(/^\s+|\s+$/g, '') != '') { 
    arrayOfHTxt.push(Htxtbox.value.replace(/^\s+|\s+$/g, '')); 
    arrayOfHtxtCellIndex.push(v); 
    } 
} 
} 

for (var i = 1; i < tbl.rows.length; i++) { 

    tbl.rows[i].style.display = 'table-row'; 

    for (var v = 0; v < arrayOfHTxt.length; v++) { 

     var CurCell = tbl.rows[i].cells[arrayOfHtxtCellIndex[v]]; 

     var CurCont = CurCell.innerHTML.replace(/<[^>]+>/g, ""); 

     var reg = new RegExp(arrayOfHTxt[v] + ".*", "i"); 

     if (CurCont.match(reg) == null) { 

      tbl.rows[i].style.display = 'none'; 

     } 

    } 

    } 
} 
</script> 

回答

2

的KEYUP功能,滿足您的要求,我已經取得了一些changes.Please與礦山接替你的代碼。

代碼:

if (Htxtbox.value.replace(/^\s+|\s+$/g, '') != '') { 
arrayOfHTxt.push(Htxtbox.value.replace(/^\s+|\s+$/g, '')); 
arrayOfHtxtCellIndex.push(v); 
} 

我的代碼:

var content = Htxtbox.value.replace(/^\s+|\s+$/g, ''); 
if (content != '' && content.length >= 3) { 
arrayOfHTxt.push(Htxtbox.value.replace(/^\s+|\s+$/g, '')); 
arrayOfHtxtCellIndex.push(v); 
} 
+0

謝謝it working.may我問你問題我有更多的2000年的數據顯示在表中,當我搜索它顯示數據非常快,如果我刪除搜索數據它顯示所有數據,但它很慢顯示所有的數據,你有什麼想法,再次感謝 – arok

1

在您的for週期的開始有效吃了你的輸入:

var keyword = headRow.cells[v].getElementsByTagName('input')[0]; 
if(keyword===undefined || keyword.length < 3) { 
    return false; 
} 

此外,您還可以在後面的代碼中使用已定義的變量keyword,只是爲了增加可讀性。

這裏是一個工作示例:http://jsfiddle.net/L99wM/1/

+0

感謝您的回答,我想是這樣的(VAR V = 0; v arok

+0

謝謝。該示例不起作用。 – arok

+0

修改它。它現在使用的onkeyup事件不會改變。 – HarryFink

1

您可以嘗試使用jQuery的

jQuery (element).keyup (function() { 
if (jQuery (this).length > 3) { 
//call search method here. 
} 
}); 
+0

他沒有在他的代碼中提到jquery。 – HarryFink

+0

問題中沒有單行的jQuery代碼,您是否建議實施完整的庫來捕獲一個事件? –

+0

哦,是的抱歉,我沒有想到這一點。 –

0

簡潔:

<input name="Field1" value="" type="text" onkeyup="if(this.value.length>2) {searchFor(this.value)}"> 

然後有一個函數:

searchFor(val) { 
// code to search for something here 
} 

或者更優雅(所以你定義在一個地方檢查功能):

<input name="Field1" value="" type="text" onkeyup="checkFld(this)"> 

然後讓腳本功能.. 功能checkFld(FLD){VAR VAL = fld.value; 如果(val.length < 3){}回報警報 ( 「搜索」 + val)的 //搜索代碼放在這裏 }

相關問題