2012-11-04 22 views
0

我有下面的代碼,因爲它不驗證我想從輸入框中刪除id,並使Javascript使用類(class =「filterCat」)而不是id。我怎麼做?Javascript使用類而不是id

謝謝。

<form id="adv_searchform" action="/" method="get" name="adv_searchform" onsubmit="return manageMultipleCategoriesSearch()"> 
    Search: 
    <input id="adv_s" class="input input_large" type="text" name="s" value="" /> 
    <h3>Category filter:</h3> 
    <ul id="catSearchFilters"> 
<li><input type="checkbox" id="filterCat" class="filterCat" value="38">Announcements</li> 
<li><input type="checkbox" id="filterCat" class="filterCat" value="39">Commentary</li> 
<li><input type="checkbox" id="filterCat" class="filterCat" value="1">Uncategorized</li></ul> <div class="clear"></div> 
    <input type="hidden" name="cat" value="" /> 
    <input type="submit" id="searchsubmit" value="Search" /> 
</form> 

<script> 
function manageMultipleCategoriesSearch(){ 

    var selectedCats = ""; 
    var isFirst = true; 

    for (i=0; i<document.adv_searchform.filterCat.length; i++){ 
    if (document.adv_searchform.filterCat[i].checked == true){ 

    if (!isFirst) 
     selectedCats += ','; 

     selectedCats += document.adv_searchform.filterCat[i].value; 
     isFirst = false; 
    } 
    } 

    document.adv_searchform.cat.value = selectedCats; 

    return true; 
} 
</script> 

回答

1

使用名稱而不是id。你應該爲不同的複選框使用不同的名稱。

<li><input type="checkbox" name="filterCat1" class="filterCat" value="38">Announcements</li> 
<li><input type="checkbox" name="filterCat2" class="filterCat" value="39">Commentary</li> 
<li><input type="checkbox" name="filterCat3" class="filterCat" value="1">Uncategorized</li></ul> <div class="clear"></div> 

JS

var check = document.getElementsByClassName("filterCat"); 
for (i=0; i<check .length; i++){ 
    if (check[i].checked == true){ 

    if (!isFirst) 
     selectedCats += ','; 

     selectedCats += check [i].value; 
     isFirst = false; 
    } 
    } 
+0

沒有一個解決方案中使用的名稱。我使用的PHP採用輸入的名稱,如果我將名稱添加到其他輸入,那麼我必須修改PHP代碼。謝謝。 – kingbt

+1

對於同一文檔中的兩個或多個元素,您不應使用相同的id。 – Anoop

+0

我modduied你的js代碼使用類。這應該可以解決你的問題。 – Anoop

0

用途:

document.getElementsByClassName('filterCat') 
+0

我應該把這個放在哪裏? – kingbt

+0

創建一個新的變量,如'var filterCat = document.getElementsByClassName('filterCat');'然後在每次調用「filterCat」的輸入形式時使用它id –

+0

順便說一下,這與IE8不兼容。如果你幸運的話,你不必支持它:) – Ryan

相關問題