[请忽略/ close-我在代码中犯了一个错误,但感谢您的贡献]
在我的代码中,我有多个共享相同父名称的字段。例如:
<input name="example[1_1]" type="checkbox">
<input name="example[1_2]" type="checkbox">
<input name="example[1_3]" type="checkbox">
我不知道其中哪个是检查值。显然我可以使用一个类,但是我想做的是做一个选择器,该选择器说获取以1_开头的所有字段。
我尝试了以下操作:
var answer = $('input[name^="example['+q+']"]:checked').val();
var answer = $('input[name^="example['+q+'"]:checked').val();
使用Jquery确实可行吗?如果不是,我将不得不重新处理我的情况,但如果有办法,我宁愿使用它。
答案 0 :(得分:1)
根据jQuery attribute selector documentation,^
选择器将
[att^=val]
表示具有att
属性的元素,其值以前缀"val"
开头。如果"val"
是空字符串,则选择器不代表任何内容。
因此,您的选择器不必在其中包含整个括号。然后,最终选择器应如下所示(与您提供的第二个选项相同):
input[name^="example[' + q + '"]:checked
所以您的最终代码应该是这样的:
var q = '1_'
var answer = $('input[name^="example[' + q + '"]:checked').val();
console.log(answer)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="example[1_1]" type="checkbox" value="1" />
<input name="example[1_2]" type="checkbox" value="2" checked/>
<input name="example[1_3]" type="checkbox" value="3" />
但是您的问题在这里可能无法解决,因为每当您使用checked
和.val()
的组合时,它只会返回第一个匹配的元素。因此,您需要获取整个匹配元素,然后分别获取它们的值。
您可以这样获得最终值:
var q = '1_'
var answer = $('input[name^="example[' + q + '"]:checked');
var length = answer.length;
for(var i = 0; i < length; i++) {
console.log(answer[i].value)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="example[1_1]" type="checkbox" value="1" />
<input name="example[1_2]" type="checkbox" value="2" checked />
<input name="example[1_3]" type="checkbox" value="3" checked />
答案 1 :(得分:1)
如果要选中所有选中的复选框,并且名称以example[1_
开头,则可以使用
var answer = $('input[name^="example[1_"]:checked')
演示
var answer = $('input[name^="example[1_"]:checked');
console.log(answer.length)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input name="example[1_1]" type="checkbox">
<input name="example[1_2]" type="checkbox" checked>
<input name="example[1_3]" type="checkbox">