日付チェックするには
[上に]
[前に]
[次に]
やまさん
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様、かえる様
御指導ありがとうございます。
チェックが出来るようになりました。
貴重なお時間をありがとうございます。
[上に]
[前に]
[次に]