我有一个HTML格式:
<input name="arrayname[]" type="checkbox" value="1">
<input name="arrayname[]" type="checkbox" value="2">
<input name="arrayname[]" type="checkbox" value="3">
<input name="arrayname[]" type="checkbox" value="4">
请注意,输入标记的name属性设置为arrayname[]
。
如果我点击一些复选框并提交表单,那么我会进入$ _POST全局数组:
["arrayname"]=>
array(2) {
[0]=>
string(1) "1"
[1]=>
string(1) "3"
}
我希望使用jQuery从输入标记中获取检查值,以便通过ajax将它们发送到服务器。我发明了javascript函数:
function myGetValue(fieldName)
{
var value;
value = $('input[name='+fieldName+']').val();
return value;
}
但是这个函数适用于没有方括号的简单名称,比如'simplename'。例如:
<input name="simplename" type="text" value="my text">
<input name="arrayname[]" type="checkbox" value="1">
<input name="arrayname[]" type="checkbox" value="2">
<input name="arrayname[]" type="checkbox" value="3">
<input name="arrayname[]" type="checkbox" value="4">
如果我alert(myGetValue('simplename'))
那么它就可以了,我得到了输入字段的值。如果我alert(myGetValue('arrayname'))
那么它就不行了,我得到'未定义'。
必须使用什么功能?我想获得名为'arrayname'的输入标签的值,并通过ajax将其发送到服务器。我不能使用序列化或json。我希望得到像$ _POST一样的数组,即使使用ajax也是如此。
您可以在实例here
我只想发送选中的值。 我的代码通过ajax发送数据:
var fieldName = 'simplename';
var fieldValue = myGetValue(fieldName);
var formaData = new FormData();
formaData.append(fieldName, fieldValue);
$.ajax({
type: 'POST',
data: formaData,
processData: false,
contentType: false,
});
答案 0 :(得分:1)
您无法将名称定义为Javascript数组对象。这是一个常规的字符串。
答案 1 :(得分:1)
您可以使用.map()获取已选中复选框元素的值,如下所示 - 它将返回一个数组
function myGetValue(fieldName) {
var value = $('input[name="' + fieldName + '"]:checked, input[name="' + fieldName + '"]:not(:checkbox, :radio)').map(function () {
return this.value
}).get();
return value;
}
演示:Fiddle
答案 2 :(得分:0)
试试这个
function myGetValue(fieldName)
{
var value;
value = $('input[name="'+fieldName+'[]"]').val();
//or
//value = $('input[name="'+fieldName+'[]:checked"]').val();
return value;
}
alert(myGetValue('arrayname'));
您的字段名称为arrayname[]
,因此您必须提供[]
以及名称,并且选择器应为$('input["name="arrayname[]"]')
<强>更新强>
$(document).ready(function() {
function myGetValue(fieldName)
{
var values = [];
$('input[name="'+fieldName+'[]"]:checked').each(function(i) {
values[i] = $(this).val();
});
return values.join(",");
}
alert(myGetValue('arrayname'));
});
答案 3 :(得分:0)
试试这个:
var checked_boxes = [];
$('input[name^=arrayname]:checked').each(function(){
checked_boxes[checked_boxes.length] = $(this).val();
});
alert(checked_boxes);
答案 4 :(得分:0)
我没有看到它,所以我猜测你正在寻找以下行为:
function myGetValues(fieldName) {
return $('input[name=' + fieldName.replace(/(\[)|(\])/g, function (m) {
return "\\" + m;
}) + ']').map(function(){return this.value}).get();
}
console.log(myGetValues('arrayname[]'));