我有这个表格,我使用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();
如果我回显价值,我得到未定义...... 为什么会这样?
答案 0 :(得分: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() }));
答案 1 :(得分:0)
尝试使用starts-with选择器(^=
),如下所示:
var js_regioni_gestite_ag = $('input:checkbox[name^=regioni_gestite_ag]:checked').val();
答案 2 :(得分: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');
});
}
希望这有帮助。