日付チェックするには

[上に] [前に] [次に]
やまさん 2000/02/29(火) 12:54:53
初心者ですが宜しくお願い致します。
   if (EDate != "") {
        errMsg = "";
        if (EDate == -1) {
            if (EDate_f == 1) {
                errMsg = "利用開始日(yyyy/m/d) ";
            } else {
                EDate = "";
            }
        } else {
            data1 = new Date(EDate);
                if (data1.getMonth == 0 && getdate > 31) {
                        errMsg = "利用開始日(yyyy/m/d) ";}
                if (data1.getMonth == 1 && getdate > 29) {
                        errMsg = "利用開始日(yyyy/m/d) ";}
                if (data1.getMonth == 2 && getdate > 31) {
                        errMsg = "利用開始日(yyyy/m/d) ";
                } else {
                data2 = data1.toGMTString();
                    y1 = data1.getYear();
                     if (year < 2000) {year += 1900;}
            m1 = data1.getMonth() + 1;
                    d1 = data1.getDate();
                    ymd = y1 + "/" + m1 + "/" + d1;
            }
        }
        if (errMsg.length == 0) {
            document.form_button.PoEfectDate.value = EDate;
        } else {
            errMsg = errMsg + "の指定に誤りがあります。";
            alert(errMsg);
            flg = 1;
        }
    }

if (data1.getMonth == 0 && getdate > 31) {
                        errMsg = "利用開始日(yyyy/m/d) ";}
というのを追加して日付チェックしたところ
JavaScript error Type 'javascript into location for details
が出力します。
何が間違っているか判りません。
何卒御指導お願い致します。
以上

EMI 2000/02/29(火) 15:24:45
>何が間違っているか判りません。
アドレスバー(って言うのか?ネスケの場合?)に"javascript:"と入力してみましょう。

フシギダネ 2000/02/29(火) 16:06:00
getdate→data1.getDate()でいかがでしょう?

フシギダネ 2000/02/29(火) 16:13:34
ついでに、data1.getMonth→data1.getMonth()でしょう。

初級者 2000/02/29(火) 16:20:54
>if (year < 2000) {year += 1900;}
if (y1 < 2000) {y1 += 1900;}
と、してみては?
あと日付判定ですが、
if (…) {
} else if (…) {


としたほうが良いと思います。

やまさん 2000/02/29(火) 18:23:44
EMI様、フシギダネ様、初級者様
御指導ありがとうございます。三人の方法を修正し実行するも
同結果となりました。全然検討がつきません。
(if -----の項目を追加したら動かないのです。)
(実行したときにチェックをおこないたいため)
また御指導頂ければと思います。
宜しくお願い致します

フシギダネ 2000/02/29(火) 18:30:04
ちょっと考えを変えて、曜日取得に失敗したらおかしな日付ってのはどうですか?

if( data1.getDay().toString() < "0" ||
     data1.getDay().toString() > "6" ) {
  errMsg = "利用開始日(yyyy/m/d) ";
}

Tmb 2000/02/29(火) 19:00:08
同じく発想を変えて,条件式を
eDate.substring(eDate.lastIndexOf("/")+1) == d1
にしてみるのはどうでしょう。

それから老婆心ながら,y1に1900年をプラスするのは先に持ってきといた方が。
#で,その後もちゃんとチェックする。でないとこの式だと閏年が・・・。

今うまく動いてない原因ですが,もしかしてif文の構造がどっかおかしいのではないですか?
かなりごちゃごちゃしているようですから,間違いに気付きにくいのかも。

かえる 2000/02/29(火) 20:47:53
IE4(JScript 3.0)以上でしか使えませんが。

if( EDate != "" ){
  if( !testDate(EDate) )
    errMsg = "利用開始日(yyyy/m/d)";
}

function testDate(val){
  var re = new RegExp("^([0-9]{4})\/([0-9]{1,2})\/([0-9]{1,2})$","");
  if( re.exec(val) != null ){
    var dt = new Date(val);
    if( isNaN(dt) || Number(RegExp.$1) != dt.getFullYear() ||
        Number(RegExp.$2) != dt.getMonth() + 1 || Number(RegExp.$3) != dt.getDate() )
      return false;
    }else{
      return false;
  }
  return true;
}

RegExpオブジェクトのあたりを変えれば他でも使えるんでしょうか?

やまさん 2000/03/02(木) 14:56:08
[[解決]]
フシギダネ様、Tmb様、かえる様
御指導ありがとうございます。
チェックが出来るようになりました。
貴重なお時間をありがとうございます。

[上に] [前に] [次に]