我有许多复选框,这些复选框是从数据库的JavaScript API调用生成的。我需要能够传递用户随后选择的复选框的值,并将其发送到处理页面。问题是复选框没有与它们相关联的ID(或者这不是问题)它们都具有相同的名称,但没有ID。
找到选中哪些复选框并将其值传递到下一页的最佳方法是什么?
我开始的一种方式是使用数组:
var options = ["option1","option2","option3"];
var option 1 = [0];
var option 2 = [1];
var option 3 = [2];
在处理页面上,使用:
var option1 = getFromRequest('option1') || '';
var option2 = getFromRequest('option2') || '';
var option3 = getFromRequest('option3') || '';
有更好的方法吗?
我已将实施更改为以下内容:
var values = []
$("input:checkbox.subIndustry").each(function(){
values.push(this.value);
});
使用
将值传递给成功页面window.location.href = REGISTER_SUCCESS +'&values='values.join(",")
然后应该使用
获取值 var variablname = getFromRequest('values') || "";
这是返回Undefined。有什么帮助吗?
答案 0 :(得分:2)
选择它们的简单方法就是$("input[type=checkbox]:checked")
但是,如果您想在检查时跟上它们,即使在加载后添加它们,您也可以创建一个变量,然后将委托指定为每个输入的“更改”状态,这是一个复选框并在每次更改时更新此变量。
这很简单:
var checked, checkedValues = new Array();
$(function() {
$(document).on("change", "input[type=checkbox]", function(e) {
checked = $("input[type=checkbox]:checked");
// if you wanted to get an array of values of the checked elements
checkedValues = checked.map(function(i) { return $(this).val() }).get();
// make a string of the values as simple as joining an array!
var str = checkedValues.join(); // would return something like: value1,value2,ext...
});
})
答案 1 :(得分:0)
由于您的所有复选框都具有相同的名称,因此您可以使用以下变体检索已选中的复选框:
var checked = $('input[name=ckboxname]:checked');
请参阅::checked selector了解更多信息
答案 2 :(得分:0)
您可以使用
简单地获取已选中复选框的值$( '输入[名称= checkboxname]:检查')VAL();
。这将为您提供已选中复选框的值,并且所有值都只使用
jquery的每个函数。
答案 3 :(得分:0)
事实证明,答案是在underscore.js库中使用indexOf。该解决方案必须应用于用于发送数据的API。
(_.indexOf(values, '9') != -1 ? 1 : '0'),