前提・実現したいこと
MultiDatesPicker for jQuery UIを使って、複数の日付を入力できるフォームを作りました。
現状は「2018/10/08, 2018/10/09」のようにカンマ区切りでフォームに値が入力されます。
この値をカンマ区切り無しで配列に渡したい。
発生している問題・エラーメッセージ
配列へはカンマが残ったまま、ひとまとまりの値として渡せれてしまう。
該当のソースコード
pug
1 div.form-group 2 label(for="candidates") 3 .input-group.date 4 input#multidatespicker.form-control(type='text' name="candidates" placeholder="候補日程") 5 script. 6 $('#multidatespicker').multiDatesPicker({ 7 dateFormat: "yy/mm/dd", //日付のフォーマット 8 language:'ja', //日本語表示 9 pickDate: true, 10 pickTime: true, 11 hourStep: 1, 12 minuteStep: 15, 13 secondStep: 30, 14 inputMask: true 15 });
js
1router.post('/', authenticationEnsurer, csrfProtection, (req, res, next) => { 2 const scheduleId = uuid.v4(); 3 const updatedAt = new Date(); 4 Schedule.create({ 5 scheduleId: scheduleId, 6 scheduleName: req.body.scheduleName.slice(0, 255), 7 memo: req.body.memo, 8 createdBy: req.user.id, 9 updatedAt: updatedAt 10 }).then((schedule) => { 11 createCandidatesAndRedirect(parseCandidateNames(req), scheduleId, res); 12 }); 13});
js
1function createCandidatesAndRedirect(candidateNames, scheduleId, res) { 2 const candidates = candidateNames.map((c) => { 3 return { 4 candidateName: c, 5 scheduleId: scheduleId 6 }; 7 }); 8 Candidate.bulkCreate(candidates).then(() => { 9 res.redirect('/schedules/' + scheduleId); 10 }); 11} 12 13function parseCandidateNames(req) { 14 return req.body.candidates.trim().split(',').map((s) => s.trim()).filter((s) => s !== ""); 15}
試したこと
元々、trim().split(',')の部分をtrim().split('\n')にしてカレンダーの入力画面をinputではなく、textareaにしていたときは改行した値を配列にうまく渡せていたのですが…
回答1件
あなたの回答
tips
プレビュー