前提・実現したいこと
チェックボックスで配列で値をpostしてあげたいのですが、チェックが無しの状態だと何も送信されず配列の要素番号がズレてしまいます。
現状では3件ほどv-forで作成されたテーブルに1つだけチェックボックスをonにすると下記のような感じになってしまいます。
is_delete = ['on']
理想は、このように空も含めた配列にしたいです。
is_delete = ['on', '', '',]
よろしくお願いいたします。
該当のソースコード
javascript
1 2<template> 3 <tbody> 4 <tr v-for="(user, index) in user" :key="user.id"> 5 <td class="text-center"> 6 <input type="hidden" name="is_delete[]" value=''> 7 <input type="checkbox" name="is_delete[]" value="1"> 8 </td> 9 <td class="text-center"> 10 <input type="text" name="name[]"> 11 </td> 12 </tr> 13 </tbody> 14</template> 15<script> 16import axios from 'axios'; 17 18export default { 19 methods: { 20 submit: function () { 21 22 const formData = new FormData(this.$refs['form']); 23 const data = {}; 24 25 for (let [key, val] of formData.entries()) { 26 if (key.match(/\[\]$/)) { 27 key = key.slice(0, -2); 28 if (Array.isArray(data[key])) { 29 data[key].push(val); 30 } else { 31 Object.assign(data, { [key]: [val] }); 32 } 33 } else { 34 Object.assign(data, { [key]: val }); 35 } 36 } 37 console.log(data) 38 }, 39 } 40 41} 42</script> 43
試したこと
hidden属性でnullを持たせてみたが、v-forの数だけ増えてしまった
回答1件
あなたの回答
tips
プレビュー