在 rails 中使用 Javascript

Using Javascript in rails

本文关键字:Javascript rails      更新时间:2023-09-26

我从来没有在rails中使用过javascript,我对这个问题有非常基本的问题。这就是我想在我的应用程序中实现的:

"在我的应用程序中,创建用户时,他/她可以选择 他们的出生日期通过选择一年、一个月和一天在三个中选择 不同的下拉菜单。目前,用户可以选择未来 日期作为他的出生日期。我需要一种方法来检查用户是否 选择一个有效的日期,并在日期 无效。

想知道我做错了什么。无论如何,谢谢!

在视图中 (窗体):

<div class="control-group">
  <%= f.label "Date of Birth (YYYY-MM-DD)", :class => 'control-label' %>
  <div class="controls">
    <%= f.select :year_Of_Birth , options_for_select((Time.now.year - 100)..(Time.zone.now.year )), :include_blank => true, :id => "year",:onchange => 'validDate()'%>
    <%= f.select :month_Of_Birth, 1..12 , :include_blank=> true, :onchange => 'validDate()', :id => "month"  %>
    <%= f.select :day_Of_Birth, 1..31 , :include_blank => true, :onchange => 'validDate()', :id => "day"  %>
  </div>
</div>

在我的应用程序中.js:

function validDate(){
    var y = document.getElementById("year").value;
    var m = document.getElementById("month").value;
    var d = document.getElementById("day").value;
    if(m==2 && leapYear(y)==false && d>28)
        document.write("Invalid Date.");
    if(m==2 && leapYear(y)==true&& d>29)
        document.write("Invalid Date.");
    if(m==4 && d>30)
        document.write("Invalid Date.");
    if(m==6 && d>30)
        document.write("Invalid Date.");
    if(m==8 && d>30)
        document.write("Invalid Date.");
    if(m==9 && d>30)
        document.write("Invalid Date.");
    if(m==11 && d>30)
        document.write("Invalid Date.");
}
function leapYear(year)
    {
        return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
    }
你可以

使用 JavaScript 的日期

var y = document.getElementById("year").value;
var m = document.getElementById("month").value;
var d = document.getElementById("day").value;
// selected date, the month has index of 0
var selectedDate = new Date(y, m - 1, d);
// first day of next month
var maxAllowedDateForMonth = new Date(y, m, 1);
// date now to check for future dates
var now = new Date;
if (selectedDate < maxAllowedDateForMonth && selectedDate < now)
{
  document.write("Invalid Date.");
}