使date_select字段成为所有其他date_select字段的日期的方法

时间:2011-10-15 09:51:50

标签: javascript jquery

使用嵌套表单我生成了5个UserPrices,因此用户填写了所有相同表单字段中的5个:

UserPricesController

    def add_store_prices
        @a_new_user = User.new
        5.times do
            @a_new_user.user_prices.build
        end
    end

我有一个名为:purchase_date的字段,它是date_select(日期下拉菜单)字段:

<%= f.date_select :purchase_date %> 

我想只使用一个UserPrice date_select作为其他4个UserPrices的日期,这样用户就不必选择5个日期下拉菜单而只能选择一个,是否有jquery插件或javascript代码这可能吗?

P.S。:这就是它现在的样子,我想摆脱其他4个Date行,只有一个。

As of now

1 个答案:

答案 0 :(得分:1)

新版本更通用,只要您有一个下划线,并且结尾处的整数从1开始,每个selct id

,这将更改任意数量的日期选择
<select id="purchase_date_month_1" onchange="changesPurchaseDates(this)"><option>10<option>12</select>
<select id="purchase_date_day_1" onchange="changesPurchaseDates(this)"><option>29<option>28</select>
<select id="purchase_date_year_1" onchange="changesPurchaseDates(this)"><option>2010<option>2011</select>

所以剩下的就是

<select id="purchase_date_month_2">
<select id="purchase_date_day_2">
<select  id="purchase_date_year_2">

<select id="purchase_date_month_3">
<select id="purchase_date_day_3">
<select  id="purchase_date_year_3">

....到第(N)或第5,然后您可以使用此功能选择将更改剩余的第一个选项。

<script>

function changesPurchaseDates(n) {
var arr_purdate_selects = []; // object to store the select boxs

var nd = (n.id).slice(0,(n.id).lastIndexOf("_")); // slice off the remaining from last underscore

arr_purdate_selects = document.getElementsByTagName("select"); // store all found selects Diry i know
 // loop throught all selects
 for (var i = 1; i < arr_purdate_selects.length; i++) {
 // only if the ids match the change those
   if(nd == (arr_purdate_selects[i].id).slice(0,(arr_purdate_selects[i].id).lastIndexOf("_"))){
  document.getElementById(arr_purdate_selects[i].id).selectedIndex =     document.getElementById(nd+"_"+1).selectedIndex;
  }  
 }

}


 </script>

我希望这会有所帮助