Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript获取多个复选框值_Javascript_Jquery_Ajax - Fatal编程技术网

使用javascript获取多个复选框值

使用javascript获取多个复选框值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用ajax和jquery提交了这个表单, 嗯,我有一个多重复选框,从中可以得到一些值 现在我在这里做了一个错误,因为复选框的值没有被发布到数据库中。。 以下是html/php部分: while($row = mysql_fetch_assoc( $result )) { echo '<input type="checkbox" value="'.$row['regione'].'" id="regioni_gestite_ag" name="regioni_gestite_

我使用ajax和jquery提交了这个表单, 嗯,我有一个多重复选框,从中可以得到一些值

现在我在这里做了一个错误,因为复选框的值没有被发布到数据库中。。 以下是html/php部分:

  while($row = mysql_fetch_assoc( $result )) {
    echo '<input type="checkbox" value="'.$row['regione'].'" id="regioni_gestite_ag" name="regioni_gestite_ag[]">' . $row['regione'] . '<br>';
    }
如果我回显该值,我将得到未定义的。。。
为什么会这样?

因为您没有正确指定
名称
属性。选择器应该是

$('input[name="regioni_gestite_ag[]"]:checkbox:checked')
但是,这仍然不能使所有内容都正常工作,因为只返回第一个匹配元素的值(因此它将只应用于第一个复选框)

最后,PHP代码生成具有相同
id
属性的多个元素,这是非法的HTML,将使随机jQuery和/或DOM API无法正常工作。这应该立即解决,也许可以完全删除
id

更新:以数组形式获取所有复选框的值,可以使用

var values = $.makeArray($('input[name="regioni_gestite_ag[]"]:checkbox:checked')
                          .map(function() { return $(this).val() }));

因为您没有正确指定
名称
属性。选择器应该是

$('input[name="regioni_gestite_ag[]"]:checkbox:checked')
但是,这仍然不能使所有内容都正常工作,因为只返回第一个匹配元素的值(因此它将只应用于第一个复选框)

最后,PHP代码生成具有相同
id
属性的多个元素,这是非法的HTML,将使随机jQuery和/或DOM API无法正常工作。这应该立即解决,也许可以完全删除
id

更新:以数组形式获取所有复选框的值,可以使用

var values = $.makeArray($('input[name="regioni_gestite_ag[]"]:checkbox:checked')
                          .map(function() { return $(this).val() }));
尝试使用选择器(
^=
),如下所示:

var js_regioni_gestite_ag = $('input:checkbox[name^=regioni_gestite_ag]:checked').val();
尝试使用选择器(
^=
),如下所示:

var js_regioni_gestite_ag = $('input:checkbox[name^=regioni_gestite_ag]:checked').val();
试试这个:

var js_regioni_gestite_ag = [];//[name="regioni_gestite_ag[]"]
if($('input[name="regioni_gestite_ag[]"][type=checkbox]:checked').length){
    // check if any checkboxes are checked
    $('input[name="regioni_gestite_ag[]"][type=checkbox]:checked').each(function(o){
        // get their values
        js_regioni_gestite_ag.push($(this).val());
    });
}

// clears all selected checkboxes
function clearSelection() {
    $('input[name="regioni_gestite_ag[]"][type=checkbox]:checked').each(function(o){
        $(this).removeAttr('checked');
    });
}
希望这有帮助。

试试这个:

var js_regioni_gestite_ag = [];//[name="regioni_gestite_ag[]"]
if($('input[name="regioni_gestite_ag[]"][type=checkbox]:checked').length){
    // check if any checkboxes are checked
    $('input[name="regioni_gestite_ag[]"][type=checkbox]:checked').each(function(o){
        // get their values
        js_regioni_gestite_ag.push($(this).val());
    });
}

// clears all selected checkboxes
function clearSelection() {
    $('input[name="regioni_gestite_ag[]"][type=checkbox]:checked').each(function(o){
        $(this).removeAttr('checked');
    });
}


希望这有帮助。

尝试使用
$('input:checkbox[name=regioni\u gestite\u ag[]]:checked')
。我已经尝试过了,不,它不会接受它。ID是单数的!您有多个具有相同id的复选框。如果我使用普通php,它会起作用,这意味着这一定是js的问题@克莱迪:请看我的回答。它检查是否有复选框,如果有,则获取它们的值。请尝试使用
$('input:checkbox[name=regioni\u gestite\u ag[]]:checked')
。我已经尝试过了,不,它不会接受它。ID是单数的!您有多个具有相同id的复选框。如果我使用普通php,它会起作用,这意味着这一定是js的问题@克莱迪:请看我的回答。它检查是否有复选框,如果有,则获取它们的值。啊,对了,忘了这一点,我们应该使用
。每个
+
$(这个)。val()
,对吗?@Kledi:选择器。如果您在阅读答案后仍然有问题,请更具体一些。@StockOverlaw:是的,如果您想获得所有的值,那么这是一种方法(
.map()
是另一种方法)。嘿,您能用它更新答案吗,.each+$(这…我不知道在javascript中应该放在哪里..我会试试的,也许你出了什么问题..谢谢,但不幸的是它不起作用..现在让我告诉你如何打印告诉我未定义的值:$postRegioni\u gestite\u ag=$\u POST[“postRegioni\u gestite\u ag”];啊,对了,忘了这一点,我们应该使用
。每个
+
$(this).val()
,对吗?@Kledi:选择器。如果在阅读答案后仍然有问题,请更具体一些。@StockOverflow:是的,如果你想获得所有的值,这是一种方法(
.map()
是另一种方法).嘿,你能用这个更新答案吗?.each+$(这个…我不知道在javascript中放在哪里..我会试试的,也许你出了什么问题..谢谢,但不幸的是它不起作用..现在让我告诉你如何打印告诉我未定义的值:$postRegioni\u gestite\u ag=$\u POST[“postRegioni\u gestite\u ag”];谢谢,它不起作用,因为很明显,我输出表单的方式是错误的,它从id中获取值,而不是从名称中获取值。我必须接受这一点:)它起作用了,我在表单中出现了一个错误,很明显:)非常感谢!但有一个问题,请问一下,提交后我如何清除表单?我现在是这样做的:$(“#regioni U gestite_ag”).prop(“checked”,false);您应该避免使用:checkbox选择器扩展,因为它已被弃用(用于最终删除)。相反,请使用[type=“checkbox”]@Kledi-使用
clearSelection
函数清除所有复选框。谢谢,它不起作用,因为很明显,我输出表单的方式不对,它从id中获取值,而不是名称。我必须接受这个:)它起作用了,我在表单中出现了一个错误,显然:)非常感谢!但请回答一个问题,提交后我如何清除表格?我现在就是这样做的:$(“#regioni_gestite_ag”).prop(“checked”,false);您应该避免使用:复选框选择器扩展,因为它已被弃用(用于最终删除)。相反,使用[type=“checkbox”]@Kledi-使用
clearSelection
功能清除所有复选框。