构建月/日下拉选择器,而不是插件

时间:2018-08-30 01:38:54

标签: javascript jquery forms datepicker

我有一个表格,我希望用户输入他们的出生月份和出生日期。但是,我找不到使用jquery构建月份和日期下拉选择器的方法。我阅读的所有内容都是关于插件的,但是我不能使用插件。以下是基本的html结构,其中会根据用户选择的月份动态填充“天”选择字段。

  <select id="month" onchange="selectMonth(this.options[this.selectedIndex].value)" name="month">
       <option value=""></option>
       <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>

<select id="day"></select>

我创建了这个小提琴,以使您了解我正在尝试做的事情。不幸的是,这种小提琴无法正常工作(这是我找到的唯一可以构建它的教程,并且无效。) https://jsfiddle.net/katherinekonn/hLc8r915/28/

有人可以解释一下我将如何创建它吗?重要的是,根据用户选择的月份,将显示正确的天数(例如,如果用户选择2月,则将显示29天)。

1 个答案:

答案 0 :(得分:0)

  1. 要声明js函数,可以尝试使用const selectMonth = month => {}代替var selectMonth(month){}
  2. 通过查看js函数,选项值应该是数字而不是月份的名称。
  3. 要清除下拉列表中的所有选项,您可以尝试dateSelect.innerHTML = ""代替dateSelect.options.length = 0dateSelect.options.length是只读的。
  4. 要在下拉列表中附加选项,您可以尝试使用dateSelect.appendChild(new Option(dayNum, dayNum))代替dateSelect.options[dateSelect.options.legnth] = new Option(date[month - 1][i], i)

您可以看看我的解决方案:https://jsfiddle.net/ymkasf6c/