0

我有三个选择,一个是月,一个是天,一个是年。我有一些基本的 JS,当三个选择之一被修改时,它会更新一个文本输入框。

HTML:

<select name="month" class="month" onchange="setDate(this,day,year)">
    <option value="1">January</option>...
</select>
<select name="day" class="day" onchange="setDate(month,this,year)">
    <option value="1">1</option>...
</select>
<select name="year" class="year" onchange="setDate(month,day,this)">
    <option value="2012">2012</option>...
</select>
<input type="text" name="hidden" value="" />

这工作得很好,但我想添加另一组这三个输入。当我这样做(制作上面的 HTML 的另一个副本)时,它们都不起作用。也就是说,文本输入框没有被更新/给定日期,因为选择被修改(选择)。

JavaScript(相关部分):

function setDate(month_selection, day_selection, year_selection)
{
    //Month, Day and Year variables created

    form.hidden.value = month + '/' + day + '/' + year;
}

关于为什么它只有在我只有一个上面的 HTML 副本时才有效以及如何解决这个问题以便我可以拥有两组这些选择的任何想法?

编辑:我通过为 HTML 的每个“副本”提供输入以及选择不同的名称来解决问题。

我现在遇到了一个新问题,即如何根据正在更改的输入来更新正确的文本框。

如果我把它放在我的 setDate 函数的末尾:

form.hidden.value = month + '/' + day + '/' + year;
form.hidden_two.value = month + '/' + day + '/' + year;

当其中任何一个发生更改时(显然),它将更新它们的文本框。有谁知道让它更新正确的文本框的方法?

4

1 回答 1

0

只是一个想法,但是您是否要更改新输入的名称?如果您有两个“隐藏”输入框,那么它将不起作用。

新的东西 :

当然,您必须将名称更改为所有字段 = 月、日、年和隐藏。然后在您的 JS 函数中,您可以确定哪个字段更改提示脚本执行......我会这样想:

function setDate(month_selection, day_selection, year_selection)
{
   if (month_selection.name=='month'){
      var hidden = document.getElementsBynName('hidden');
   } 
   if (month_selection.name=='month_two'){
      var hidden = document.getElementsByName('hidden_two');
   } 

//Month, Day and Year variables created

   hidden.value = month + '/' + day + '/' + year;
}

这不是一个精确的解决方案,只是一个指向如何解决它的指针。

于 2012-05-16T06:16:44.673 回答