Сериализация формы с соответствующими метками - PullRequest
0 голосов
/ 11 октября 2018

Я использую jQuery для сериализации формы и отправки ее значений в URL, который хранит их в виде пар имя / значение в БД.Однако имена и идентификаторы каждого поля формы генерируются динамически (например, f4sgg-342 ) и, следовательно, не описывают конкретное поле.У меня нет контроля над системой, генерирующей эти поля.

Однако существуют соответствующие метки, которые содержат описание конкретного поля формы - они также содержат for = " f4sgg-342 "атрибут, позволяющий мне связать метку с правым полем.

Я использовал обычную функцию form.serialize ():

<script type="text/javascript">
$(document).ready(function() {
    var form = $("#some-form");

    $("#some-form").submit(function(e) {
        $.ajax({
            type: "POST",
            url: 'https://example.com/post.php',
            data: form.serialize(),
            success: function(response) {
                console.log(response);
                $("#result").html(response);
            },
            error: function() {
                alert('Error Submitting');
            }
        })
    })
})

Но я совершенно не понимаю, как заменить имена полей формы на метки, когдаЯ отправляю контент в URL.Рассматривая использование .labels () из jQueryUI - но опять же - не может быть в состоянии "соединить точки"

Есть предложения?Спасибо!

1 Ответ

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

Как насчет этого?Предположим, у вас есть кнопка внизу формы (с идентификатором submit) , которая прикреплена к событию клика:

$("#submit").click(function(){

    var originalSerialized = $("#some-form").serialize();
    console.log(originalSerialized);

    var splitedString = originalSerialized.split("&");
    console.log(splitedString);

    var newString = "";

    $.each(splitedString, function(i, element){

        var strangeName = element.substr(0, element.indexOf('='));

        if(newString == "")
            newString = $("label[for='"+strangeName+"']").html() + element.substr(element.indexOf('='));
        else
            newString += "&" + $("label[for='"+strangeName+"']").html() + element.substr(element.indexOf('='));

    })

    console.log(newString);

    //Here, you do the AJAX and the data is the newString variable

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