onclick時のbuttonオブジェクトのNAMEは有効か?

[上に] [前に] [次に]
土屋 [E-Mail] 2000/06/01(木) 20:51:01
こんばんわ。
onclick時の動作について解らないことがあったので質問させて下さい。

状況としては、
・フォームタグ内に複数の入力用テキストボックスが存在する。
・同一フォーム内にリセットボタンと更新、削除ボタンが存在する。
・更新、削除ボタンはonclick時にJavaScriptで確認メッセージボックスが表示される。
・更新、削除ボタンにはNAMEオプションが指定されている。

上記の状態で確認メッセージが表示され確定後、次ページに移動するのですが
更新、または、削除ボタンに関するパラメタが渡されてきません。
受けて側ではどのボタンを押されたかにより処理を振り分けているのですが、
上記の状態により思ったように振り分けられませんでした。

で、ちょっと思ったのですが・・・。
もしかして、onclickイベントによりJavaScriptを起動された場合、
ボタンのNAMEオプションは無効になってしまうのでしょうか?
もし違うのであればこちらのソースにミスがあるのでしょう。
が、そうであるならonclickイベントを有効にしてもどのボタンが押されたか
判るように送信パラメタの追加などがJavaScript上からでも出来るのでしょうか?

なにか良い知恵がありましたらお教え願いたく思います。

バギンズ 2000/06/02(金) 05:17:48
>もしかして、onclickイベントによりJavaScriptを起動された場合、
>ボタンのNAMEオプションは無効になってしまうのでしょうか?
そんな話は聞いたことがありません。

この手の物はソースを公開した方がいいです。

shin' 2000/06/02(金) 09:35:01
type="button"じゃなくtype="submit"なら
パラメータは渡されるんですか?

らてる 2000/06/02(金) 11:18:47
nameは有効ですが、buttonにすべて同じnameをつけていませんか?
それでは、undefineになってしまうと思います。
<input type=button value=button1 onclick=click('button1') >
とかでfunctionに情報を引き渡してあげてはいかがでしょうか。

nobut [E-Mail] [HomePage] 2000/06/04(日) 00:50:52
>上記の状態で確認メッセージが表示され確定後、次ページに移動するのですが
>更新、または、削除ボタンに関するパラメタが渡されてきません。
CGIでも使わないとパラメータは保持されないと思いますよ。
クッキーはよく分からないですけど。

土屋 2000/06/05(月) 11:21:12
ども、返事が遅れて済みません。

>バギンズさん
>この手の物はソースを公開した方がいいです。
えーと、実際上はoracleのPL/SQLを使用して動的にHtml文を作成しています。
自分のサイトを持っていないのでソースをのせるのは見づらいかなと思い行いませんでした。
で、部分的になりますがJavaScript部分とボタン部分のソースは以下のようになっています。
(サンプルは登録部分ですがやはりボタン名がおくれません)

<SCRIPT LANGUAGE=javascript>
<!--
function ImplementCheck() {
    if( confirm("登録してもいいですか")){
        document.INSERT.submit();
    }
}
//-->
</SCRIPT>

<INPUT TYPE="button" NAME="CmdButn" value="登録" onclick="ImplementCheck()">

>shin'
えーと、言われてみて試してみたのですが submit の場合は正常にNAMEオプションが有効になりました。

皆さんの意見を見るかぎりButtonオブジェクトのNAMEオプション制限ではない見たいですね。
基本的にはPL/SQLを使用したCGIになっているのでボタン名が重複していても大丈夫ですし、
submit が正常なのでボタン部分のソースに誤りが無い場合、Oracle側の制限もしくは障害の可能性が
あるのかなって所ですね。
この辺はOracleに質問してみようと思います。

バギンズ 2000/06/05(月) 14:36:51
意味が分かりました。(^_^)

更新ボタンと削除ボタンはtype=submitにして、
更新ボタンのonClickで変数にフラグでも立てて更新ボタンが
押されたことがわかるようにしておき、
フォームのonSubmitで更新ボタンか削除ボタンかを判断して
確認ダイアログを表示するようにすればいいと思いますが、
いかがでしょう?

土屋 2000/06/05(月) 16:54:36
[[解決]]
>バギンズさん
なんか説明が下手で申し訳ないです。(汗

で、取り敢えずバギンズさんの示す方向で色々試行錯誤した結果、以下のようなScriptで
自分の考えていたものを実装できました。

<SCRIPT LANGUAGE=javascript>
<!--
function ImplementCheck(procmode) {
    if( procmode == 1 ){
        if( confirm("更新しますか?")){
            return(true);
        }
        return(false);
    } else {
        if( confirm("削除しますか?")){
            return(true);
        }
        return(false);
    }
}
//-->
</SCRIPT>

<INPUT TYPE="submit" NAME="CmdButn" value="更新" onclick="return ImplementCheck(1)">
<INPUT TYPE="submit" NAME="CmdButn" value="削除" onclick="return ImplementCheck(2)">

onclickイベント時に全てを集約することが出来たので取り敢えずは簡素になったかなって所です。

しかし、よく考えて見ると確かにbutton時のNameオプションってパラメタとして渡されないものかもという考えになってきました。(汗
基本的にbuttonオブジェクトの使用方法を考えれば自ページ内の処理がメインですし、受け渡しを考えなくてもいいかなぁ〜と・・・。
何かを他のページに渡そうとすればsubmitを使用する気がしますし。
ただ今回は基本ベースとなるソースがbuttonになっていたのでこだわっていたのですが、submitの方がより鮮明にボタンの
内容を示すことにもなりますし結果的には良いソースになったと思います。

ただ、本当のところbuttonオブジェクトもformタグで囲ってあれば他のページのパラメタとして
渡すことが出来るのでしょうかね?
こればかりはやってみないと解らないですね。
さすがに今すぐチェック出来るような環境が無いのですが今後必ず疑問は解決しておきたいと考えます。

みなさんありがとうございました。

バギンズ 2000/06/05(月) 17:56:00
onClickでfalseを返すだけで、submitをキャンセルできましたか。
勉強不足でした。(^_^;)

>しかし、よく考えて見ると確かにbutton時のNameオプションって
>パラメタとして渡されないものかもという考えになってきました。(汗
JavaScript必須という条件下でなら、type=hiddenのエリアを別に設けておいて
ボタンが押されたら、type=hiddenのエリアに値をセットしてもいいですよね。

>ただ、本当のところbuttonオブジェクトもformタグで囲ってあれば他のページのパラメタとして
>渡すことが出来るのでしょうかね?
formタグで囲わないとネットスケープではボタンが表示されませんが...(^_^;)

[上に] [前に] [次に]