2014-12-03 102 views
-1

我有這樣的:的JavaScript修改變量

var category = "3%2C16%2C6%2C10%2C1%2C19"; 
巫類別ID

3 16 6 10 1 19%2C是類別之間的空間。

我要的是在這裏:

if (document.getElementById("3").checked = false) { 
    category = "16%2C6%2C10%2C1%2C19"; 
} 
else { 
    category = "3%2C16%2C6%2C10%2C1%2C19"; 
} 

我要讓這所有,我有複選框,但你無法取消所有的複選框,因爲服務器不能送你回去的任何數據。

這是用於過濾結果

+0

你想做什麼?你能詳細解釋一下嗎? – Rajesh 2014-12-03 13:01:01

+0

首先:您在if語句中使用賦值運算符。第二:如果你不想至少有一個盒子被檢查,爲什麼不試着用收音機盒代替複選框? – Jinandra 2014-12-03 13:01:20

+0

我想解析一個JSON,並添加一些過濾器,如果你取消選中該複選框的變量爲ID刪除選定的ID,或者如果你檢查它會添加ID – 2014-12-03 13:05:09

回答

0

如果需要,使用數組會更容易,然後將其轉換爲此字符串表示形式。

var categories = []; 
$('#category-form input').change(function() { 
    var id = $(this).attr('data-id'), 
     index = categories.indexOf(id); 
    if (this.checked && index === -1) { 
     categories.push(id); 
    } else if (!this.checked && index !== -1) { 
     categories.splice(index, 1); 
    } 
}); 

您可以在this fiddle中看到我的工作代碼。 (帶有多個複選框,字符串表示和至少一個支票)

+0

這是我想要的非常感謝 – 2014-12-03 13:45:24

0

嘗試

if (document.getElementById("3").checked === false) { 

注意額外的雙等於做一個類型安全檢查

或更好

if (!document.getElementById("3").checked) { 

然而,正如你'重新使用jQuery,你似乎正在從檢查狀態一起摧毀一個字符串,這將是與硬編碼字符串,從而可能像真的脆:

var category = ""; 

$("input:checked").each(function() { 
    category = $(this).id + "%2C"; 
}; 

只有打電話,當你需要的輸出如按鈕按下。

0

當您使用jQuery時,您可以聽取複選框的change事件,然後在每次選中或取消選中時構建列表。要存儲這些值,您可以使用複選框的value屬性或添加data-屬性。

獲取一組數值和join將避免尾隨%2C

var category = ''; 
 
(function($) { 
 
    // cache collection of checkboxes 
 
    var cboxes = $('input[type=checkbox]'); 
 

 
    cboxes.on('change', function() { 
 
     // find the ticked boxes only, and make an array of their category values, then join the values by a space 
 
     category = $.makeArray(cboxes.filter(':checked').map(function() { 
 
      return $(this).data('category'); 
 
      //return $(this).val(); // if you store them in value="3" 
 
     })).join('%2C'); 
 
     
 
     // output for debug purpose 
 
     $('#categoryOutput').html("'" + category + "'"); 
 
    }); 
 
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<form> 
 
    <input type="checkbox" id="c1" data-category="3" /> 
 
    <input type="checkbox" id="c2" data-category="16" /> 
 
    <input type="checkbox" id="c3" data-category="6" /> 
 
    <input type="checkbox" id="c4" data-category="10" /> 
 
    <input type="checkbox" id="c5" data-category="1" /> 
 
    <input type="checkbox" id="c6" data-category="19" /> 
 
</form> 
 
<div id="categoryOutput"></div>

側面說明:儘量避免與數字開頭的要素id秒 - 它在技術上是無效的,可以在某些情況下打破東西。

+0

我想這是我想要的但我不知道爲什麼它現在工作 – 2014-12-03 13:38:45