2012-06-01 44 views
0

用於使用在Chrome瀏覽器下運行良好的j查詢來獲取選定的複選框值,但在IE中失敗。由於某些原因,我給每個複選框使用相同的ID,但使用不同的名稱。例如Internet Explorer不支持用於選擇複選框值的j查詢

 <input id="LIV" name="<?php echo $value['desc']; ?>" type="checkbox" checked value="<?php echo $value['id']; ?>" /> <?php echo $value['desc']; ?> 

     <a class="i-btn-2" onclick="addparameters('LIV');">Add</a> 

添加按鈕的點擊我調用一個函數addparameter是如下

   function addparameters(id) 
       { 

       var tempstr='#'+id+':checked'; 

        $(tempstr).each(function(i) 
        { 
         val[i] = $('#'+id).val(); 
         val1[i]=($(this).attr('name')); 
         str12=str12+val[i]; 
        }); 
       } 

在IE瀏覽器,如果我選擇了多個檢查框它給我的只有第一個複選框值。但是在Chrome中它給我所有選中的複選框值 我的代碼有什麼問題。請幫我在IE上運行它

+0

的ID都應該是獨一無二的,名稱不必如此。 –

+1

*「由於某些原因,我給每個複選框相同的ID,但使用不同的名稱。」*這是無效的標記。 ['id' values ** must ** be unique on the page](http://www.w3.org/TR/html5/global-attributes.html#the-id-attribute)(這是一個HTML5鏈接,但是這不是一個新的遠程要求)。 –

+0

這似乎在IE9中適用於我。 ':checked'選擇器使得'#LIV:checked'返回多個元素,但'#LIV'只返回一個。這可能與jQuery處理它的僞選擇器的方式有關。 –

回答

1

正如尼爾說 - 每個複選框必須具有不同的ID - 甚至每一個元素在你的HTML必須有不同的ID - ID是它應該是 - 一個識別器和IDETIFICATOR唯一地描述一個具體項目。

相反的ID,您可以使用類或相同的輸入名稱:

function addparameters(name) { 
    var selector = $('input[name="'+name+'"]:checked'); 
    $(selector).each(function(i){ 
     val[i] = $(this).val(); 
     val1[i] = name; 
     str12 = str12+val[i]; 
    }); 
} 

function addparameters(class) { 
    var selector = $('input.'+class+':checked'); 
    $(selector).each(function(i){ 
     val[i] = $(this).val(); 
     val1[i] = $(this).attr('name'); 
     str12 = str12+val[i]; 
    }); 
} 
+0

您需要修復'tempstr'作爲正確的選擇器。 –

+0

@火箭編輯我的代碼。謝謝你指出。 – shadyyx

3

請務必給所有複選框不同 id's。

如果它們都具有相同的ID,他們將不正確選擇...

眼下所有的複選框已在id="LIV",使用的東西,像一個普通的類來選擇所有這些,而不是。

+0

你可以*做一下這樣的操作:'$('[id =''+ id +'「]')',但我建議你*不要*。 –

1

您正在選擇一個ID而不是一個班級。只有一個元素可以具有相同的ID,但多個元素可以共享類。所以把id改成一個類,它就會開始工作。例如

var tempstr='.'+yourClass+':checked';