使用嵌套表单我生成了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行,只有一个。
答案 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>
我希望这会有所帮助