今日の日付をデフォルトで表示させ、プラスマイナス1出来る様に

Test


0   名前: 黒い犬 : 2007/07/07(土) 23:44  ID:CQTiT15r sub-NP
フォームで今月の残りの日にち×価格を計算させています。
日にちのフィールドにデフォルトで今日の日付を表示し、
フィールドの横の上向き▲下向き▼プラスマイナス1できるようにしたいです。
(ほとんどが当日から計算するのですが、まれに、昨日から、または明日から計算させる場合があるので)
検索してもわかりませんでした。

よろしくお願いします。

1   名前: 匿名 : 2007/07/07(土) 23:44  ID:KWji1YjJ sub-kJ
ここは丸投げ掲示板ではないので、以下の事項を記入すべきです。

・ベースとなるフォームの HTML ソース。これがなければ何も始まらない。

・具体的にどの部分が分からなかったのか。少なくとも、Date オブジェクトの使い方、イベント属性の使い方くらいは調べられるはず。失敗したもので良いから試し書きしてみたコードがあれば、こちらも具体的な説明ができる。
var d = new Date;

d.setDate (d.getDate () + 1);  // 明日
d.setDate (d.getdate () + 1);  // 明後日

d.setDate (d.getDate () - 1);  // 明日
d.setDate (d.getDate () - 1);  // 今日
d.setDate (d.getDate () - 1);  // 昨日

2   名前: 黒い犬 : 2007/07/07(土) 23:44  ID:CQTiT15r sub-NP
コードはこれです。
FIELD02でデフォルトで今日の日付を表示し、(ここまでは出来ていると思います)
プラスマイナス1〜2できる様にし、直接入力でも対応したいです。
よろしくお願いします。

それから、htmlの板でする質問かもしれませんが、
付帯質問1
document.form01.field01...など長いので、
短く代入する方法もどこかで見かけ、検索してみたのですが、わかりませんでした。
教えて頂けるとありがたいです。
付帯質問2
オブジェクト名(?)form01やfield01としていますが、
みなさんはどのような命名規則を用いていますでしょうか?
よろしくお願いします。

<HTML>
<HEAD>
<TITLE>テスト</TITLE>

<script type="text/javascript">
<!--

function stfocus(){
document.form01.field01.focus();
}
function disp()
var d =new date():
var n =d.getdate().tostring(10);
document.form01.field02.value=n;
}
function keisan(){
document.form01.field04.value=p@arseint(document.form01.value/document.form01.field03.options[document.form01.field03.selectedIndex].value);
document.form01.field05.value=parseInt(document.form01.field03.options[document.form01.field03.selectedIndex].value-document.form01.field02.value +1);
document.form01.field06.value=parseInt(document.form01.field04.value * document.form01.field05.value);
}
//-->
</script>
</HEAD>
<BODY onLoad="stfocus();disp()">
<TABLE BORDER="1" CELLSPACING="1" BGCOLOR="#FFFFFF">
<TR>
<TD>FIELD01</TD>
<TD><INPUT TYPE="TEXT" STYLE="IME-MODE: DISABLED;" NAME"FIELD01" SIZE="8"</TD>
</TR>
<TR
<TD>FIELD02</TD>
<TD><INPUT TYPE="TEXT" STYLE="IME-MODE: DISABLED;" NAME="FIELD02" SIZE="8"></TD>
</TR>
<TD>FIELD03</TD>
<SELECT NAME="FIELD03">
<OPTION VALUE="50000">50,000
<OPTION VALUE="5000">5,000
<OPTION VALUE="500">500
<OPTION VALUE="50">50
</SELECT></TD>
</TR>
<TD>FIELD04</TD>
<TD><INPUT TYPE="TEXT" NAME"FIELD04" SIZE="8"></TD>
</TR>
<TR>
<TD>FIELD05</TD>
<TD><INPUT TYPE="TEXT" NAME="FIELD05" SIZE="8"</TD>
</TR>
<TR>
<TD>FIELD06</TD>
<TD><INPUT TPE="TEXT NAME="FIELD06</TD>
</TR>
</TABLE>
<P>
<INPUT TYPE="BUTTON" VALUE="実行" onClick="keisan()">
</P>
</FORM>
</BODY>
</HTML>

3   名前: 匿名 : 2007/07/07(土) 23:44  ID:epW2eUw6 sub-8t
>>FIELD02でデフォルトで今日の日付を表示し、(ここまでは出来ていると思います)
ここで提示されたソースには至る所に誤りが散見され、それさえできないと思います。

JavaScriptは大文字小文字を区別するので、それに注意してください。
HTMLではタグの欠けがないか調べてみてください。

投稿する前に、サンプルのソースをブラウザで表示させて見るのもいいかもしれません。

4   名前: 黒い犬 : 2007/07/07(土) 23:44  ID:CQTiT15r sub-NP
実は会社ではwindowsを使用しています。
会社では期待通りの動作をしています。
それをプリントアウトし、家でテキストで入力し、.htmlで保存し、
ブラウザで表示させようとしても、macなので(?)表示できませんでした。
ですので、誤りはあるかもしれませんが、
おおよそは伝わったのではないかと思います。
この状態で色々とご指摘いただければと思います。
いかがでしょうか?
大文字小文字についてはチェックしてみます。
ありがとうございました。


5   名前: 匿名 : 2007/07/07(土) 23:44  ID:npMCSgti sub-Cz
> macなので(?)表示できませんでした

ならば確実に HTML にミスがあります。Mac のせいではありません(実際、私は Mac 上でこの作業を行った)。

> おおよそは伝わったのではないかと

ならば、こちらもおおよその説明しかできないかもしれないわけで。貴方がそれで大丈夫と言うなら構いませんが(実際、フォーム構造も計算式もおかしいので、勝手に補完した)。
<form action="#" id="form01">
  <p>
    <input name="FIELD01" value="1">
    <input name="FIELD02" readonly="readonly">
    <select name="FIELD03">
      <option value="50000">50,000</option>
      <option value="5000">5,000</option>
      <option value="500">500</option>
      <option value="50">50</option>
    </select>
    <input name="FIELD04" readonly="readonly">
    <input name="FIELD05" readonly="readonly">
    <input name="FIELD06" readonly="readonly">
    <input type="button" value="実行" onclick="Keisan (this.form); ">
    <input type="button" value="日付 +1" onclick="SetDate (+1, this.form); ">
    <input type="button" value="日付 -1" onclick="SetDate (-1, this.form); ">
  </p>
</form>

<script type="text/javascript">

var D = new Date;

onload = function () {
    var c = document.forms['form01'].elements;
    
    c['FIELD02'].value = D.getDate ();
    c['FIELD01'].focus ();
};

function Keisan (form) {
    var c = form.elements;
    c['FIELD04'].value = parseInt (c['FIELD03'].value / c['FIELD01'].value);
    c['FIELD05'].value = c['FIELD03'].value - c['FIELD02'].value;
    c['FIELD06'].value = c['FIELD04'].value * c['FIELD05'].value;
}

function SetDate (date, form) {
    var d = D.getDate () + date;
    var lastDate = (new Date (D.getFullYear (), D.getMonth () + 1, 0)).getDate ();
    if (1 <= d && d <= lastDate) D.setDate (d);
    form.elements['FIELD02'].value = D.getDate ();
}
</script>

6   名前: 黒い犬 : 2007/07/07(土) 23:44  ID:CQTiT15r sub-NP
会社に行って試してみます。
ありがとうございました。

<HTML>
<BODY>
<TITLE>
123
</TITLE>
</BODY>
</HTML>
というテキストを123.htmlというファイル名でデスクトップに保存して、
firefoxで起動すると、
ソースの表示をした様な
{\rtf1\mac\ansicpg1000
のような文字しか表示されません。
家では確認できないので、会社で試してみます。
ありがとうございました。

付帯質問1についても教えて頂き、ありがとうございました。

7   名前: 匿名 : 2007/07/07(土) 23:44  ID:npMCSgti sub-Cz
>>6
テキスト形式ではなくリッチテキスト形式で保存しているからです。

一覧へ戻る