HTML・Javaスクリプト

2011年6月 4日 (土)

Java Script の実行タイミング

Java Scriptはボタンなどが押されたとき呼び出されることは、いろいろな機能の説明のサンプルなどで使われている。
そのため、これまで Java Script で function を書いてきた。
たぶ、最初のころ読んだの入門書に書かれていたのかも知れないけど function の中ではなく次のように書いたとき

<html>
<head><title>JavaScriptDemo</title><head>
<body>
Hello.
<script type="text/javascript"><!--
alert("Java Script 実行");
--></script>
</body>
</html>

Helloを表示した後にJava Script が実行され alert が表示される。
いまひとつ判らなかったところがクリアになった。

2011年5月21日 (土)

submitボタンで2回送信される

HTMLのsubmitボタンを押したとき続けて2回送信されることがあった

注:ボタンが2回押された時の記述ではありません。

テキストボックスが変更されたらhidden属性に値を設定し送信するようにonChange=submit()を書いていた。
function bsy_chg() {
var obj=document.forms["uriinp"];
obj.chg.value="1";
obj.submit();
}
submitボタンでもhidden属性に値を設定し送信するようにしたら、submitが2回送信されてしまった。

あたり前のことですが、スクリプトの中の送信とsubmitボタン本来の送信の2回送信されていたわけです。

ところで、PHPをeclipseでデータの2重登録をデバッグしていて登録直前にブレークポイントを設定していたのですが2回目の登録時に停止しませんでした。1回めの登録処理最後時点でデータは1件しか登録されていません。そこで再開ボタンを押すと2件目のデータが登録されます。このときブレークポイントで停止しませんでした。
2回送信を確認したのは、$_SESSIONにカウンタを作り呼び出しのカウントを表示すると送信ボタンで2回カウントアップしました。

教訓
submitボタンのonClickスクリプトの中で送信してはいけない。
eclipseではこのとき2回目の送信でブレークポイントで停止しない(事がある)。

2011年5月16日 (月)

セレクトボックが変更されたら送信

Aセレクトボックスの選択が変更されたらBセレクトボックスをクリアして送信する。
Bセレクトボックスの変更時は何もしない。送信ボタンを押したときはA、Bのセレクトボックスの値を送信する。

<form action="index.php" method="post"  name="sentaku">
Aコード:
    <select name="A"  onChange='clrsubmit()'>
    <option></option>
    <option>A001</option>
    <option>A002</option>
    <option>A003</option>
  </select>
Bコード:
    <select name="B">
        <option></option>
        <option>B001</option>
        <option>B002</option>
        <option>B003</option>
    </select>
<input type="submit" value="送信">
</form>

<script type="text/javascript"><!--
function clrsubmit() {
    var obj=document.forms["sentaku"];
    obj.B.value="";
    obj.submit();
}
--></script>

Aセレクトボックスの値によりBセレクトボックスの値を変更する場合、Aが変更されたらBの選択項目を変更して表示する。
プログラムでは、送られてきたデータのBの値がクリアされていたらAが変更されたものとしてBの選択項目を作成し再表示し。
A、Bともにデータがあるときは結果を表示する。