I want to change the result of my form data before submitting, but I am struggling with my script
My html
<form> <table> <tr class="row_1"> <td> <input name="flavour_1" type="text"><br> <input name="flavour_2" type="text"> </td> <td> <input name="taste_1" type="text"><br> <input name="taste_2" type="text"> </td> </tr> <tr class="row_2"> <td> <input name="flavour_1" type="text"><br> <input name="flavour_2" type="text"> </td> <td> <input name="taste_1" type="text"><br> <input name="taste_2" type="text"> </td> </tr> </table> <button type="button" id="serForm">Serialize Form </button> </form>
JavaScript:
$("#serForm").on('click', function() { var db = $("form").serializeArray(); for (var m = 0; m < db.length; m++) { var e = db[m], name = e.name, value = e.value; var parts = name.split(/_(?=\d+$)/); if (parts.length === 2) { name[parts[0]] = name[parts[0]] || []; name[parts[0]][parts[1] - 1] = e; delete e; } } })
I am trying to get a result similar or similar to this.
"flavour": [{"row_1_flavour_1_value", "row_1_flavour_2_value"},{"row_2_flavour_1_value", "row_2_flavour_2_value"}], "taste": [{"row_1_taste_1_value", "row_1_taste_2_value"},{"row_2_taste_1_value", "row__taste_2_value"}]
Note
It is possible to have several rows (not only 2), and they are not called row_n , this name, for example, is intended for purposes
source share