2012-07-06 100 views
1

,這是我的javascript,允許過濾搜索字段...變化格屬性

function escape4regex(text) 
{ 
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 
} 

function searchRegExFieldKeyUp() 
{ 
    var table = document.getElementById('ModelFilter'); 
    var cells = table.getElementsByTagName('div'); 
    var searchterms = escape4regex(this.value); 

    var regVar = '(?=.*' + searchterms.replace(/\s/g, '.*)(?=.*') + '.*)'; 
    var i=cells.length; 
    while (i--) 
    { 
     var cell = cells[i]; 

     var rowStr = cell.innerHTML; 
     // remove all tags 
     rowStr = rowStr.replace(/<(?:.|\n)*?>/gm, '').replace(/\n|\s{2,}/gm, ' '); // searches whole row 

     var regex = new RegExp(regVar,"gi"); 
     var result = (regex.test(rowStr)); 

    if(result) 
    { 
     cell.style.display = "";// check if compat with IE 
    } 
    else 
    { 
     cell.style.display = "none"; 
    } 
    } 
} 

將會產生一個從DATABSE輸入複選框

<div id="ModelFilter"> 
<?php 
while ($row = mysqli_fetch_assoc($result)) 
{ 
    echo"<div class=\"modelfilter_td\" id=\"modelfilter_td\">"; 
     echo"<input type=\"checkbox\" id = \"$row[ModelID]\" 
      name = \"selectedModels[]\"value =\"$row[Model]\" onclick=\"chkcontrol.apply(this);\">"; 
     echo "$row[Model]"; 
    echo"</div>"; 
} 
echo"</div>"; 

我要做到以下幾點:

  1. 當複選框被選中時,它保持可見狀態,即使它不在搜索項中過濾器字段。

  2. 當複選框被選中時,背景色被改變。

  3. 複選框和複選框的標題被保存在一個div中,我想讓用戶點擊div中的任何位置以允許切換複選框。

任何人開始我在這條正確的軌道?

編輯:這裏是解決問題「3」。

<script language="javascript"> 
$(document).ready(function(){ 
$(".modelfilter_td").click(function(e){ 
    var chk = $($(this).find("input[type='checkbox']")); 
    if(chk.attr('checked')) 
    { 
     chk.attr('checked',false); 
    }else{ 
     chk.attr('checked',true); 
    } 

    }); 
}); 

回答

0

這不是你的問題的解決方案,但在HTML中的上下文上的PHP使用的建議:

<div id="ModelFilter"> 
    <?php while ($row = mysqli_fetch_assoc($result)): ?> 
    <div class="modelfilter_td" id="modelfilter_td"> 
     <input 
      type="checkbox" 
      id="<?php echo $row['ModelID'] ?>" 
      name="selectedModels[]" 
      value="<?php echo $row['Model'] ?>" 
      onclick="chkcontrol.apply(this);" 
     > 
     <?php echo $row['Model'] ?> 
    </div> 
    <?php endwhile ?> 
</div> 

這使得大多數IDE來處理HTML的自動完成和代碼-分析。

+0

謝謝你會這樣做;) – user1338194 2012-07-06 08:25:53

+0

即時獲得一個意外的$結束? – user1338194 2012-07-06 08:33:59

+0

在隔離的環境中,此代碼有效。你是否1:1複製了代碼?如果沒有,你是否注意到while()語句結尾的雙冒號? 如果是:上下文是否正確?這段代碼不會在PHP上下文中運行(想想<?php ?>)。 – Ron 2012-07-06 08:47:28