EDIT: array_chunk , который делает именно это.
Ну, мне не хотелось отлаживать, поэтому я написал версию с array_reduce :
$pergroup = 2;
$redfunc = function ($partial, $elem) use ($pergroup) {
$groupCount = count($partial);
if ($groupCount == 0 || count(end($partial)) == $pergroup)
$partial[] = array($elem);
else
$partial[$groupCount-1][] = $elem;
return $partial;
};
$arr = array(1,2,3,4,5);
print_r(array_reduce($arr, $redfunc, array()));
дает
Array
(
[0] => Array
(
[0] => 1
[1] => 2
)
[1] => Array
(
[0] => 3
[1] => 4
)
[2] => Array
(
[0] => 5
)
)
Для достижения этой привязки к событию submit
самого form
, а не к событию click
кнопки отправки. Также обратите внимание, что вы не должны использовать on*
атрибуты события. Поскольку HTML-содержимое формы динамически добавляется в DOM, вы можете вместо этого использовать делегированный обработчик событий как для form
, так и для span
. Попробуйте это:
$(document).ready(function() {
$('.click_notes').on('click', function() {
var tid = $(this).data('question-id');
$(this).closest('ul').find('.demo').html('<div class="comment_form"><span><b>X</b></span><form id="contactForm1" action="submit.php" method="post"><textarea required cols="50" class="span10" name="notes" rows="6"></textarea><br><input class="btn btn-primary" id="submitnotes" name="submit_notes" type="submit" value="Add Notes"><input type="hidden" name="submitValue" value="' + tid + '" /></form><br></div>');
});
$(document).on('submit', '#contactForm1', function(e) {
e.preventDefault();
$.ajax({
type: this.method,
url: this.action,
data: $(this).serialize(),
success: function(data) {
console.log('Submission was successful.');
console.log(data);
},
error: function(xhr) {
console.log('An error occurred.');
console.log(xhr);
},
});
}).on('click', 'span', function() {
$(this).parent().hide()
});
});
Также обратите внимание, что вы включаете две версии jQuery, одна из которых (1.6.1) устарела почти на 8 лет. Я бы предложил вместо этого использовать одну ссылку на jQuery 3.3.1.