jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery:将复选框的值作为数组返回?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这让我很难过.我可以轻松地将多选的值作为数组获取,并将其传递给ajax请求:

@H_673_7@<SELEct id="countries" class="multiSELEct" multiple="multiple" name="countries[]"> <option value="AFG">Afghanistan</option> <etc> ... $countries_input = $("#countries"); var countries = $countries_input.val(); $.ajax({ data: { country : countries,... },... });

但我找不到任何等效的方法获取具有多个选择的复选框的值.明显的东西不起作用:

@H_673_7@<input type="checkBox" name="check[]" value="foo1"/>foo1<br/> <input type="checkBox" name="check[]" value="foo2"/>foo2<br/> ... var bar = $('input:checkBox[name=check]').val(); // undefined var bar = $('input:checkBox[name=check[]]').val(); // also undefined var bar = $('input:checkBox[name=check]:checked').val(); // also undefined

有任何想法吗?谢谢.

解决方法

没有内置的jQuery函数.你必须自己做.您可以通过简单的循环轻松完成:

@H_673_7@var vals = [] $('input:checkBox[name="check[]"]').each(function() { vals.push(this.value); });

或者,如果您只想要检查的那些:

@H_673_7@var vals = [] $('input:checkBox[name="check[]"]').each(function() { if (this.checked) { vals.push(this.value); } });

或者您可以使用map并获取

@H_673_7@var vals = $('input:checkBox[name="check[]"]').map(function() { return this.value; }).get();

或者,如果您只想要检查的那些:

@H_673_7@var vals = $('input:checkBox[name="check[]"]').map(function() { return this.checked ? this.value : undefined; }).get();

旁注1:jQuery要求属性值选择器中的值(上面的那种)总是在引号中,尽管在撰写本文时尽管记录它仍然松懈.这是一个jQuery的东西,但在这种情况下你也需要CSS(CSS2 Reference | CSS3 Reference),因为你的包括[],这对CSS中没有引号的值无效. (在CSS中,没有引号,值必须为identifiers.)

旁注2:注意我在上面的迭代器函数中使用this.value来获取输入的值,而不是$(this).val().它几乎只是一种风格的东西,从各个方面来看都不比另一种更好. this.value更直接,如果你完全了解DOM(每个网络程序员都应该),那就非常清楚了.但是,当然,完全可靠的跨浏览器与复选框和大多数其他输入元素,它不是可靠的跨浏览器与一些其他表单字段(例如,选择框). $(this).val()在jQuery密集型应用程序中更惯用,您不必担心这是输入还是选择.是的,它增加了开销,但如果你没有数千个,那就不重要了.

大佬总结

以上是大佬教程为你收集整理的jQuery:将复选框的值作为数组返回?全部内容,希望文章能够帮你解决jQuery:将复选框的值作为数组返回?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。