Изменить имя элемента при вызове serialize () - PullRequest
1 голос
/ 20 января 2012

Есть ли способ изменить имя сериализуемого элемента, но только в сериализованных данных?Возможно, я не спрашиваю об этом правильно, поэтому вот что я имею в виду.

То есть, если у меня есть такой элемент управления:

<asp:dropdownlist id="ddTest" runat="server">
    <asp:listitem value="1" name="1" />
    <asp:listitem value="2" name="2" />
</asp:dropdownlist>

И я его сериализую:1008 * x будет выглядеть следующим образом:

ddTest=2

Итак, мой вопрос, без изменения названия элемента управления, как я могу получить x, как:

TestID=2

Это возможно?

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Вот что может сработать.

  1. Используйте serializeArray для сериализации формы в массив, который выглядит следующим образом:

    [{ name: "field_name", value: "field_value" }, ...]
    
  2. Измените правильное свойство name, выполнив цикл с результирующим массивом.

  3. Используйте $.param, чтобы правильно структурировать массив.

    $("#testform").submit(function (e) {
        var values = $(this).serializeArray()
            , found = false
            , i
            , serialized;
    
        e.preventDefault();
    
        for (i = 0; i < values.length && !found; i++) {
            if (values[i].name == "field1") { 
                // or whatever field you'd like to replace
                values[i].name = "new_field_name";
                found = true;
            }
        }
    
        // serialized string with new names.
        serialized = $.param(values);
    });
    

Пример: http://jsfiddle.net/X6SV8/

0 голосов
/ 20 января 2012

Можно попробовать клонировать узел, изменить информацию в клонированном узле, сериализовать его, а затем удалить клон.

http://api.jquery.com/clone/

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