WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:架空の日付にアラートをだしたい

0:[投稿] manet [MAIL] [URL] [2002/06/06 22:06 ][環境:WIN+IE わからない]

西暦から和年号に変換するためのスクリプトを組んでて実行できたんですが、例えば13月32日などや数字以外の文字をテキストに入れた場合、アラートでエラーメッセージを出したいんですが、うまくいきません。

どうすればいいでしょうか?私が組んだJavaScriptは↓です。

<script language='JavaScript'>
<!--
function OKK(){
gou='';  // 和年号
nengou=''; //和年号の生年
nen=0; // 和年号の生年の年の部分
year=document.forms[0].elements[0].value;
month=document.forms[0].elements[1].value;
day=document.forms[0].elements[2].value;
if(year<1868)
gou='???';
if(year>=1868 && year<1912){  //M.45.7.29 T.15.12.24 S64.1.7まで
gou='明治';
nen=(year-1867);
nengou=gou+nen
}
if(year>=1912 && year<1926){
if(year==1912 && month<=7 && day<=29){
 gou='明治';
 nen=year-1867;
 }
else{
gou='大正';
nen=(year-1911);
}
nengou=gou+nen;
}
if(year>=1926 && year<1989){
 if(year==1926 && month<=12 && day<=25){
  gou='大正';
  nen=year-1911;
 }
else { gou='昭和';
nen=year-1925;
}
nengou=gou+nen;
}
if(year>=1989){
 if(year==1989 && month==1 && day<=7){
 gou='昭和';
 nen=year-1925;
 }
else {gou='平成';
nen=year-1988;
}
nengou=gou+nen;
}
switch(month){ // 日付チェック
case 2:
 if(day>=1 || day<=28)
  right();
 else miss();
  break;
case 4: case 6: case 9: case 11:
 if(day>=1 || day<=30)
  right();
 else miss();
  break;
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
 if(day>=1 || day<=31)
  right();
 else miss();
  break;
default:
  miss();
}
}
function miss(){                      //ミスがあったときに実行
alert('入力にミスがあります。');
document.forms[0].elements[3].value='';
}
function right(){                  // 正しいときに実行
document.forms[0].elements[3].value=gou+nen;
}
// -->
</script>
誕生日を入力<form>
西暦<input>年<input>月<input>日
和年号に変換<input>
<input type=button value=OK onClick=OKK()>
<input type=reset value=Clear>
</form>


1:[質問] manet [URL] [2002/06/06 22:15 ]

あ、正しく入力してもアラートがでてしまうんで、正しいときはでないようにしたいんです。


2:[回答] バギンズ [2002/06/07 00:56 ]

↓この3行ですが
year=document.forms[0].elements[0].value;
month=document.forms[0].elements[1].value;
day=document.forms[0].elements[2].value;

それぞれ、文字として格納されていますので数値に変換する必要があります。

year=parseInt(document.forms[0].elements[0].value);
month=parseInt(document.forms[0].elements[1].value);
day=parseInt(document.forms[0].elements[2].value);

または

year=document.forms[0].elements[0].value - 0;
month=document.forms[0].elements[1].value - 0;
day=document.forms[0].elements[2].value - 0;

その他にも、年のエラーチェックをしていなかったり、&& にするところを || にしていたりしますね。


3:[完了] manet [URL] [2002/06/07 10:18 ]

なるほど〜!できました。
細かいミスが多くてうまくいかなかったみたいでした。
どうもありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World