電子書籍の厳選無料作品が豊富!

http://www.kanaya440.com/contents/js/calendar/in …

このカレンダー付き日付入力プログラムを
メールフォームに組み込みたいのですが
どうしてもエラーが出てしまいます。

入れたいページはこれ↓です。
http://innerrich.com/postmail/arukeru_yoyaku_tes …
ここの「希望日」のところです。
どうしてもできないので
今のところカレンダーをポップアップ表示させるのみに至っています。

1.calendar.txtをダウンロードし(というかクリックするとテキストファイルが開くので別名で保存し、.jsの拡張子をつけます。
shift-jisで保存しました。
2.そのファイルをこのarukeru_yoyaku_tesco.htmと同じ階層に置きました。
3.<head>と</head>の間に<script src="calendar.js" language="JavaScript"></script> と書ました。
※今ははずしてあります。

4.希望日の横の欄の位置に
<input type="text" name="p1" id="p1" size="30" maxlength="10">
<input
name="Calendar"
type="button"
value=" "
style="background-image: url(calendar.gif);
background-color:#ffffff;
width:20px;
height:20px;
border:0;
cursor:pointer;"
onClick="wrtCalendar(event,this.form.p1,'yyyy/m/d');">

と書き込みました。

しかしカレンダーの画像をぽちとしても
カレンダーは出ず
左下に「エラーです」という表示がでます。

ファイル読み込みにせず
直接head内に書き込んでみてもだめです。

他のjavascriptは動くのに
(ポップアップも、その先のカレンダー表示もJavaScript)
どうしてもできなくて悔しいです。

あんまり詳しくないのでプログラムをいじるのも
おっかなびっくりです。
どなたかどうか教えてください。
よろしくお願いいたします。

windowsでdreamweaverを使いながら
タグも直接できるところはいじったりしています。

A 回答 (3件)

プロなんですね=>


いいえ、昔のプログラミングの経験が少しある程度の
素人です。そんなに詳しくありません。基礎知識レベルです。
あなたのページで何故エラーが出るかはわかりません。残念ながら、ご指導するスキルもありません。

カレンダー表示でカレンダーが出て日付をクリックすると
左の空欄に年月日が入る・・・という風に。
=>無理です。なぜならcalendar.jsは、選んだ日付を一箇所のタグ
にしか返してくれないからです。しかも非同期で返ってくるので、
いつタグの値が返されたかハンドリングできません。そこで、カレンダーから
返された値を確認してOKボタンを押し、年、月、日の欄に分解して入れる
仕組みをJAVASCRIPTで追加すれば出来ます。

まる投げのお願い質問は管理人に怒られますが、今回は特別とゆうか
うまくヒントを書けないので、以下を参考にソースを研究してください。
(手順)
まず、calendar.txtをダウンロードしたら中身をいじらずそのまま
calendar.jsに名前を代えて自分のサイトにアップしてください。
オリジナルには<html>や<body>等のタグは無いはずです。
そしたら、<head></head>の中に
<script src="./jslib/calendar.js" type="text/javascript" charset="Shift_JIS"></script>
と書きます。
その後ろに、新たなJAVASCRIPTを↓のように追記します。
<script type="text/javascript">
//<![CDATA[
function DateSet(){
var setdate = document.getElementById('result').value;
document.getElementById('year').value = setdate.substring(0,4);
document.getElementById('month').value = Number(setdate.substring(5,7));
document.getElementById('day').value = Number(setdate.substring(8,10));
document.getElementById('result').value ="";
}
//]]>
</script>
フォームタグに以下のように名前を付けます(任意の名前でよい)
<form action="./postmail.cgi" method="post" name="sendform">
日付セット部分を以下のようにします。(日の後ろに追記します)
</select>

     <input name="calender"
type="button" value="カレンダーから"
onClick="wrtCalendar(event,this.form.result,'yyyy/mm/dd');"
style="width:80px;height:20px;cursor:pointer;" >
  <input type="text" name="result" id="result" value="" size="12">
<input type="button" value="OK" onClick="DateSet()" size="2">
※年、月、日のoption valueを全部"XX"(文字)からXX(数値)にしちゃいました。
<option value="1">1</option> ==> <option value=1>1</option>
これは、01~09までの先行0を取り除く処理を作るのが面倒だったので、さぼった訳です。(正規表現で除けるのですが...)

ところで、送信先のCGIもあなたが作っているのですか?
だとしたら、YYYY/MM/DDの形の日付を受け取る様に改造するだけ
ですみますよ。
    • good
    • 0

<1.calendar.txtをダウンロードし(というかクリックするとテキストファイルが開くので別名で保存し、.jsの拡張子をつけます。


shift-jisで保存しました。>
ここの手順がまちがってませんか?あなたのサイトの
http://innerrich.com/postmail/arukeru_yoyaku_tes …
をFireBugで見ると、calendar.jsの中身に余分な物(hrmlとかbodyとか)
がついているようですが、これは根本的な原因では無いです。
あなたのサイトのソースをコピペして調べてみたところ、
calendar.jsを使うときは、formとbuttonタグにname属性が無いと
動かないみたいです。適当な名前aaa,bbbをつけたら出来ました。
FireFox3.0とIE6.0で動作確認しました。
<変更箇所>
=======
<form action="./postmail.cgi" method="post" name="aaa">
=======
<option value="30">31</option>
</select>

     <input name="bbb"
type="button" value="カレンダー表示"
onClick="wrtCalendar(event,this.form._日,'d')"
style="
width:100px;
height:20px;
cursor:pointer;" >
=======
このやり方だと、カレンダーから日の欄のセットのみです。
年月日をカレンダーから別々の欄にセットするためには、
さらに工夫する必要がありますね。

この回答への補足

すごい・・・
すごい人ですね。あっさりできてしまうのですね。
(何のお仕事なんでしょう。きっとプロなんですね)
やってみるけどできません・・・またエラーが出ちゃいます。
あほな子ですみません。

calendar.jsの中身のhrmlとかbodyタグは消しても大丈夫なんですか?
こわくて触れませんでした。

一番最初のフォームにも名前をつけるんですね。
こういう形にしたいのです。
http://innerrich.com/postmail/arukeru_yoyaku_tes …
カレンダー表示でカレンダーが出て
日付をクリックすると
左の空欄に年月日が入る・・・という風に。
何度も甘えてばっかりですみません!

どうか教えてください。

補足日時:2008/11/13 16:06
    • good
    • 0

日の横の欄


<input type="button" name="Calendar" value="カレンダー表示"
onClick="wrtCalendar(event,this.form._日,'d')"
style="background-image: url(calendar.gif);
background-color:#ffffff;
width:20px;
height:20px;
border:0;
cursor:pointer;"
>

この回答への補足

ありがとうございます。
教えていただいたとおりやってみたんですがやっぱり
「ページでエラーが表示されました」と
出てしまいます・・・。

補足日時:2008/11/13 09:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!