Сериализованная форма не работает в jQuery
Не могли бы вы взглянуть и помочь мне понять, где я ошибаюсь? Вот ссылка на jsfiddle: http://jsfiddle.net/Hitman666/QcEkj/1/, а также этот код
HTML:
<form action="#" id="gamesForm">
<p>
<input id="gName" type="text" class="medium" />
<span class="notification information">Game name</span>
</p>
<p>
<span class="notification information">Enabled:</span>
<input id="gEnabled" type="checkbox" />
</p>
<br />
<!--Additional data for extra type-->
<div id="extraAdditionalData" class="hidden">
<p>
<input id="rRacers" type="text" class="medium" />
<span class="notification information">Racers</span>
</p>
<p>
<input id="rVideoSet" type="text" class="medium" />
<span class="notification information">Video set</span>
</p>
</div>
</form>
<a href="#" id="saveConfiguration" class="graybuttonBig">Save everything!</a>
JavaScript:
$(document).ready(function(){
$("#saveConfiguration").click(function(){
alert( $("form").serialize() );
});
});
Все, что я получаю, это пустая строка.
Ответы
Ответ 1
Вы должны указать свои элементы формы name
s!
Это не зависит от jQuery. Каждый элемент формы должен иметь name
для рассмотрения формы как успешный контроль:
Успешное управление является "действительным" для представления. Каждый успешный элемент управления имеет имя управления в паре с его текущее значение как часть представленного набора данных формы. Успешный контроль должен быть определен в FORM
и должен иметь имя управления.
jQuery просто игнорирует те элементы, которые не имеют имени (или, в зависимости от того, как он получает элементы, он может даже не видеть их, поскольку сама форма не имеет к ним ссылки).
Ответ 2
Что-то еще, что предотвращает корректную сериализацию serializeArray()
, - это входы disabled
. serializeArray
не сериализует отключенные входы, во многом аналогично тому, как отключенные входы не отправляются с формой.
Успешное управление является "действительным" для отправки.
- Элементы управления отключены не могут быть успешными.
Источник
Ответ 3
Пожалуйста, добавьте name
в поле ввода:
<input type='text' name='give_some_name' />
В эту скрипку я добавил name
, и она работает нормально.
Ответ 4
Я думаю, проблема в том, что вы пытаетесь выбрать форму, например
$("form");
Но это эквивалентно
getElementsByTagName("form");
Возвращает массив объектов.
Таким образом, вместо этого вы можете использовать селектор #id или использовать индекс для доступа к форме.
Надеюсь, это поможет.
Ответ 5
Прежде всего, вам нужно присвоить атрибут name всем элементам управления вводом, таким как текстовые поля и т.д. Затем, пожалуйста, проверьте, не конфликтует ли ваш идентификатор или нет, у меня был такой же идентификатор для формы и один раздел, где была моя проблема.
Ответ 6
Вы не указали правильную ссылку на форму в своем JavaScript
Попробуйте перейти на это:
$('#gamesForm').serialize();
Ответ 7
И ваша ссылка неверна. Попробуйте:
$("#gamesForm").serialize();