0

我有这个表格,我使用 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>';
    }

这就是我用javascript得到它的方式:

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

如果我回显该值,我会得到未定义...为什么会这样?

4

3 回答 3

3

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

$('input[name="regioni_gestite_ag[]"]:checkbox:checked')

但是,这仍然不会使一切正常,因为.val()仅返回第一个匹配元素的值(因此它仅适用于第一个复选框)。

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

更新:将所有复选框的值作为数组获取,您可以使用

var values = $.makeArray($('input[name="regioni_gestite_ag[]"]:checkbox:checked')
                          .map(function() { return $(this).val() }));
于 2012-09-21T12:11:51.913 回答
0

尝试使用开始选择器 ( ^=) ,如下所示:

var js_regioni_gestite_ag = $('input:checkbox[name^=regioni_gestite_ag]:checked').val();
于 2012-09-21T12:12:14.340 回答
0

试试这个:

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');
    });
}

希望这可以帮助。

于 2012-09-21T12:28:09.427 回答