2012-11-04 24 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

相关问题