2014-12-03 74 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