Ваш «HTML-массив» вообще не является массивом, даже если предположить, что есть ряд других подобных входных данных (хотя при отправке формы выбранный вами серверный язык, вероятно, позволяет вам получить доступ к значениям входных данных с тем же именем как массив). Во всяком случае ...
Основная проблема в том, что в вашем JS есть синтаксическая ошибка:
$("input[id^="author"]")
Если вы хотите включить двойные кавычки в строковый литерал, заключенный в двойные кавычки, вы должны их избежать:
$("input[id^=\"author\"]")
Или процитируйте строку с одиночками:
$('input[id^="author"]')
Может быть более эффективно избегать выбора атрибута, начинающегося с атрибута id, и выбирать атрибутом name, отмечая, что для jQuery квадратные скобки в имени атрибута необходимо экранировать с помощью обратной косой черты, а для строковых литералов JS также необходимо избегать обратной косой черты:
$('input[name="authors\\[\\]"]')
Также для получения значения ввода с помощью jQuery используйте .val()
вместо .text()
, но более эффективно просто использовать this.value
:
var authors = [];
$('input[id^="author"]').each(function(){ authors.push(this.value); });
Я бы также рекомендовал объявлять массивы с = []
вместо = new Array()
.