2015-04-24 4 views
3

Мне нужно отправить форму с помощью jQuery, но перед ее отправкой я хочу изменить значение одного из полей формы без с указанием изменения для пользователя. Я знаю, что это не лучший способ, но мое программное обеспечение требует этого.Как получить и заменить данные из формы serialize() перед отправкой?

В настоящее время я использую:

var submit = $("#submitform").serialize(); 

Для сериализации данных, а затем представить их с помощью

$.post('/post', submit) 

Сериализованный данные у меня есть следующие:

entry%5Bbody%5D=hello+and+welcome&addedContexts=presentation&context=prese ntation&selectedContexts=&statementid=&timestamp= 

Я просто хочу, чтобы изменить значение entry%5Bbody%5D что-то еще.

Я знаю, что могу использовать Regex на строке (я не могу найти что?), Но, может быть, вы знаете более элегантное решение? Например, сначала сериализуя форму, затем десериализируя ее, меняя нужное значение и снова сериализуя ее?

Спасибо!

+0

Возможный дубликат http://stackoverflow.com/questions/2403179/how-to-get-form-data-as-a-object-in-jquery –

ответ

6

Использование $("#submitform").serializeArray() и поиск элемента в массиве с name собственности равным "entry[body]" и редактировать его свойства value.

// convert form data to array 
var data = $("#submitform").serializeArray(); 

// edit data here 
// using ES6 
data.find(item => item.name === 'entry[body]').value = "something else"; 
// OR using ES5 
data.forEach(function (item) { 
    if (item.name === 'entry[body]') { 
    item.value = "something else"; 
    } 
}); 

// then POST 
$.post('/post', $.param(data)); 
+0

Хорошо, но тогда как я соберите объект, который я получаю с 'serializeArray' обратно в строку? –

+0

@deemeetree исправлено. –

+0

Спасибо, @Patrick, работал как шарм! –

Смежные вопросы