Не удается получить поля формы из действия кнопки (JavaScript) - PullRequest
0 голосов
/ 03 октября 2018

Я использую модальное окно с формой вместе с кнопкой «Сохранить настройки», чтобы инициировать вызовы JavaScript / AJAX для моего сервера ASP.NET Core (в конце концов).Когда я проверяю элементы с помощью Chrome, я вижу все свойства, однако моя сохраненная переменная из .serializeArray() создает только __RequestVerificationToken.

JavaScript:

$(document).on("click", "#btnSaveSettings", function () {
    var savedSettings = $('form#frmSaveSettings').serializeArray();
    console.log(savedSettings);
});

Console output

Form properties HTML:

<form asp-page-handler="SaveSettings" class="form-horizontal" id="frmSaveSettings" method="post">
<fieldset> //most elementes removed for clarity!
    <legend>Edit network node</legend>
        <div class="form-group">
            <label class="col-lg-4 control-label">Domain name</label>
            <div class="col-lg-8">
                <input class="form-control" type="text" id="spanPartitionKey" readonly />
            </div>
        </div>
</fieldset> 
<div class="modal-footer">
    <div class="col-lg-12">
        <div class="row">
            <div align="left" class="col-sm-2">
                <button type="button" class="btn btn-danger">Delete node</button>
            </div>
            <div align="right" class="col-sm-10">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-success" id="btnSaveSettings">Save settings</button>
            </div>
        </div>
    </div>
</div>

На основеВыше я бы ожидал, что savedSettings будет содержать значение элемента управления формы (вместе с токеном против подделки).У меня есть другая модальная форма на той же странице, которая отлично работает, однако я не очищаю элементы формы таким же образом;скорее я ссылаюсь на них по тегу id.

Есть идеи, почему это так?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Согласно Документация по методу $ (). SerializeArray () , он сериализуется по name, а не id.Так что вам просто нужно добавить правильный атрибут name к каждому входу.

0 голосов
/ 03 октября 2018

Метод .serializeArray () использует стандартные правила W3C для успешных элементов управления, чтобы определить, какие элементы он должен включать;в частности, элемент нельзя отключить, и должен содержать атрибут имени .

Элемент <input> в вашем примере кода не имеет атрибута name, установите его иserializeArray () будет включать его.

Источник: Документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...