Как отобразить значение опции выбора в качестве ответа, используя Node.js - PullRequest
0 голосов
/ 20 сентября 2018

Я новичок в Node.js и Express

Я пытаюсь извлечь выбранную опцию из списка выбора HTML-страницы и отобразить в качестве ответа, используя node.js

HTML

<form name="survey" id="survey" method="post" action="/survey">
    <select name="monthofbirth">
        <option value="1">January</option>
        <option value="2">February</option>
        <option value="3">March</option>
        <option value="4">April</option>
        <option value="5">May</option>
        <option value="6">June</option>
        <option value="7">July</option>
        <option value="8">August</option>
        <option value="9">September</option>
        <option value="10">October</option>
        <option value="11">November</option>
        <option value="12">December</option>
    </select>
</form>

Index.JS

var express = require('express')
var bodyParser = require("body-parser");
var app = express()

app.use(express.static('public'))

app.use(bodyParser.urlencoded({ extended: false }));

app.post('/survey', function (req, res) {
    let month = req.body.monthofbirth;
});

app.listen(3000, function () {
    console.log('Example app listening on port 3000!')
})

Когда я пытаюсь напечатать ответ, используя код res.write (<b>${month}</b>);Он отображает значение параметра, например 1, 2, 3 и т. Д., Но я должен отображать текст, например, январь, февраль и т. Д.

, пожалуйста, помогите мне с этим: (

Изменить:

Я не должен изменять HTML-документ, поэтому я не смогу изменить значения параметров с 1, 2, 3 на январь, февраль и т. Д .;

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

, что является нормальным, потому что значение, прикрепленное к каждой опции, является числом (1,2,3,4, ... 12), если вы хотите получить название месяца, которое вы должны изменить, выберите опцию, подобную этой

<select name="monthofbirth">
    <option value="January">January</option>
    <option value="February">February</option>
    <option value="March">March</option>
    <option value="April">April</option>
    <option value="May">May</option>
    <option value="June">June</option>
    <option value="July">July</option>
    <option value="August">August</option>
    <option value="September">September</option>
    <option value="October">October</option>
    <option value="November">November</option>
    <option value="December">December</option>
</select>
0 голосов
/ 20 сентября 2018

Самый простой способ - просто сделать так, чтобы значения представляли месяцы, которые вы пытаетесь использовать.Есть ли причина, по которой у вас есть значения в качестве номера месяца, а не имени?

0 голосов
/ 20 сентября 2018

Client Side

Используйте querySelector, чтобы получить элемент option для значения, а затем получить его innerText.

document.getElementById('submit').onclick = () => {
  const select = document.querySelector("select[name='monthofbirth']")
  const value = select.value;
  const option = select.querySelector(`option[value='${value}']`)
  const text = option.innerText
  console.log(text)
}
<form name="survey" id="survey" onSubmit='return false'>
  <select name="monthofbirth">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
  </select>

  <button id='submit'>Submit</button>
</form>

Сторона сервера

Создание карты или объекта с использованием строки или числа в качестве ключа.

const monthNames = {
  '1': 'January',
  '2':'February',
   // etc
}

res.write(`<b>${monthNames[month]}</b>`);

3rdБиблиотека вечеринок

Вы также можете использовать стороннюю библиотеку, чтобы получить не только имя, но и конкретное название локали.

https://momentjs.com/

https://github.com/moment/moment/issues/2433

...