痔になりやすい生活習慣とは?

いつもお世話になっています。
以下のformでボタンを押してポストした時、受信側でvalueの値が取得できず、ボタン名が取得されます。

<form method="post" action="送信URL">
  <button type="submit" name="hoge" value="ボタンの値">ボタン名</button>
</form>
正しくvalueを取得する方法をご教示ください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

1つのフォームで、どのボタンが押されたかを認識したいのでしたら、


<button type="submit" name="button1" value="ダミー文字列">ボタン名1</button>
<button type="submit" name="button2" value="ダミー文字列">ボタン名2</button>

といった感じで、ボタン毎にnameを変えておいて、
受信側では、値そのものは見ずに「値が設定されているかどうか」だけをチェックすればどうでしょうか。
(button1が設定されていればボタン1がクリック、button2が設定されていればボタン2がクリック)

ボタン毎の情報をサーバー側に持たせずにHTML側で持たせたいのでしたら、

<button type="submit" name="button1" value="ボタンの値1">ボタン名1</button><input type="hidden" name="button1value" value="hoge">
<button type="submit" name="button2" value="ボタンの値2">ボタン名2</button><input type="hidden" name="button2value" value="fuga">

といった形で別途hiddenを併用する(サーバ側で、button1に値が設定されていたら、button1valueをbuttonの値として処理し、button2に値が設定されていたら、button2valueをbuttonの値として処理する)か、

必要な情報が数値アルファベット程度だったら、

<button type="submit" name="button_hoge" value="1">ボタン名1</button>
<button type="submit" name="button_fuga" value="1">ボタン名2</button>

といった形で、nameの方に情報を持たせるという手もあります。
(サーバ側で、button_XXX に何らかの値が設定されていたら、button=XXX として扱うようにする)
    • good
    • 0
この回答へのお礼

丁寧に教えて下さりありがとうございます。色々アイデアがありますね。
当方の方法は2番目に近いですが、どうしてもvalueが日本語になりますのでnameで参照するほうがよいようです。
PHPだと....if($_POST['button1'])ですね。
ありがとうございました。

お礼日時:2009/07/28 15:17

ブラウザによって解釈が異なるようです。



<form>
<button type="submit">piyo</button>
<input type="hidden" name="hoge" value="fuga">
</form>

的なやり方で処理するしかないのでは?
    • good
    • 0
この回答へのお礼

IEでは、やはりそうでしたか.............FireFoxでは正常に作動するのですが...........
これでは<input type=submit>とほとんど変わりませんね。(見栄えだけか?)
今は一つのフォームに複数のボタンを配置してボタンごとに値を割り当てたいのでhiddenはできれば避けたいです。
かといってボタン毎にformを作るのは見栄えがよくないし.......
しかたないのでひとまずボタンの表示名を強制的に送信して受信側で表示名に対する値を割り当てています。
ありがとうございました。
ほかにアイデアがあれば教えてください。

お礼日時:2009/07/28 11:16

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q複数のsubmitボタンで押されたボタンを取得する方法

form内の、submitボタンの値が拾えません。
1つだけsubmitボタンを設置すると値が拾えますが、
2つ以上submitボタンを設置すると拾えません。
仕様上、無理なのでしょうか?

<SCRIPT language="JavaScript">
function move_post(){
alert(document.frmMvPost.btn.value);
}
</SCRIPT>

<FORM name="frmMvPost" action="" method="post" onsubmit="return move_post()">
<INPUT type="submit" name="btn" value="テスト1">
<INPUT type="submit" name="btn" value="テスト2">
<INPUT type="submit" name="btn" value="テスト3">
</form>

Aベストアンサー

> alert(document.frmMvPost.btn.value);

btnというオブジェクトが複数あるため、btnは配列になってしまうため、
document.frmMvPost.btn.valueでは値が取れません。

回避策はonClickイベントにて値をHiddenへ格納すればOKです。

_____________________________________________________________

<SCRIPT language="JavaScript">
function move_post(){
alert(document.frmMvPost.onbtn.value);
}

function set_value(s_val)
{
document.frmMvPost.onbtn.value = s_val;
}

</SCRIPT>

<FORM name="frmMvPost" action="" method="post" onsubmit="return move_post()">
<INPUT type="submit" name="btn" value="テスト1" onClick="set_value('テスト1')">
<INPUT type="submit" name="btn" value="テスト2" onClick="set_value('テスト2')">
<INPUT type="submit" name="btn" value="テスト3" onClick="set_value('テスト3')">
<INPUT type="hidden" name="onbtn">
</form>

_____________________________________________________________


※テストしていないため動作は保証しません。問題ある場合にはお手数ですが何かしら手を加えてください。

> alert(document.frmMvPost.btn.value);

btnというオブジェクトが複数あるため、btnは配列になってしまうため、
document.frmMvPost.btn.valueでは値が取れません。

回避策はonClickイベントにて値をHiddenへ格納すればOKです。

_____________________________________________________________

<SCRIPT language="JavaScript">
function move_post(){
alert(document.frmMvPost.onbtn.value);
}

function set_value(s_val)
{
document.frmMvPost.onbtn.value = s_val;
}

</SCRIPT...続きを読む

QJavascriptでのbuttonのname属性、もしくはid属性を取得

押されたボタンのname属性、もしくはid属性を取得し、処理を分けるプログラムを考えています。
<form>タグ自体にid属性は存在しますが、name属性はありません。
その状況で、押されたボタンのid、もしくはnameを取得するにはどうしたらいいでしょうか?

Aベストアンサー

<input type="button" onclick="ckBtn(this)" (その他のパラメーター)>

の様に書けば、呼ばれた関数で

function ckBtn(button) {
alert('id=' + button.id);
alert('name=' + button.getAttribute('name');
}

の様に元の inputタグの属性を得られます。

# 上のコードはチェックしてないのでスペルミスとかあるかも知れません。

参考URL の 「DOM-HTMLを操作するための仕組み」を見てください。

参考URL:http://javascriptist.net/docs/js_ref_ext.html

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

Qフォームボタンのvalueを渡すにはどうしたらいいのでしょうか?

下記のソースのように「word」というテキストフィールドの
入力チェック後ボタンのvalueをword.phpに渡したいのですがどのようにしたらいいのでしょうか?
入力チェックをせず
input type="button"ではなくinput type="submit" にするとword.phpに渡せるのですが・・・
ようはA、B、Cそれぞれのボタンを押した時で
word.phpでbtnのvalueをPOSTで受け取り
処理をvalue A、B、Cで分岐させたいんです。
よろしくお願いします。

<html>
<head>
<SCRIPT language="JavaScript">
<!--
function chk(chkfrm){
var tmp = chkfrm.word.value.length;
if(tmp > 50 ){
alert("文字数が多すぎます");
}
else{
chkfrm.submit();
}
}
//-->
</SCRIPT>
</head>
<body>

<form name="form" method="post" action="word.php">
<input name="word" type="text" id="word">
<input type="button" name="btn" value="A" onclick="chk(this.form);">
<input type="button" name="btn" value="B" onclick="chk(this.form);">
<input type="button" name="btn" value="C" onclick="chk(this.form);">
</form>

</body>
</html>

下記のソースのように「word」というテキストフィールドの
入力チェック後ボタンのvalueをword.phpに渡したいのですがどのようにしたらいいのでしょうか?
入力チェックをせず
input type="button"ではなくinput type="submit" にするとword.phpに渡せるのですが・・・
ようはA、B、Cそれぞれのボタンを押した時で
word.phpでbtnのvalueをPOSTで受け取り
処理をvalue A、B、Cで分岐させたいんです。
よろしくお願いします。

<html>
<head>
<SCRIPT language="JavaScript">
<!--
function chk(chk...続きを読む

Aベストアンサー

<html>
<head>
<SCRIPT language="JavaScript">
<!--
function chk(chk){
var chkfrm = chk.form;
var tmp = chkfrm.word.value.length;
if(tmp > 50 ){
alert("文字数が多すぎます");
}
else{
form.btn.value = chk.value;
chkfrm.submit();
}
}
//-->
</SCRIPT>
</head>
<body>

<form name="form" method="get" action="sub.htm">
<input name="word" type="text" id="word">
<input type="button" value="A" onclick="chk(this);">
<input type="button" value="B" onclick="chk(this);">
<input type="button" value="C" onclick="chk(this);">
<input type="hidden" name="btn"/>
</form>

</body>
</html>

こんな感じでどうでしょう?

<html>
<head>
<SCRIPT language="JavaScript">
<!--
function chk(chk){
var chkfrm = chk.form;
var tmp = chkfrm.word.value.length;
if(tmp > 50 ){
alert("文字数が多すぎます");
}
else{
form.btn.value = chk.value;
chkfrm.submit();
}
}
//-->
</SCRIPT>
</head>
<body>

<form name="form" method="get" action="sub.htm">
<input name="word" type="text" id="word">
<input type="button" value="A" onclick="chk(this);">
<input type="button" value="B" onclick="chk(this)...続きを読む

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QリンクでPOSTデータを送信することは可能ですか?

はじめまして。
Submitボタンを使用せずに<A>リンクでFORMのPOSTメソッドデータを送信することは可能でしょうか?
やはりURLにデータを付加して送信するしかないのでしょうか?
ご教授よろしくお願い致します。

Aベストアンサー

javascript を使えば可能です。大雑把にはこんな感じ。

・パラメータが全部 hidden な form を記述しておく(ブラウザでは表示されない)
・<a href> では、その form を submit するように javascript を記述する

試してないですけど、こんな感じ。

<form name=f method=POST action="http://どこか">
<input type=hidden name=x1 value=v1>
</form>

<a href="javascript:document.f.submit()">リンクから submit</a>

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

QボタンをクリックでPHP文を実行

ボタンをクリックしたときのみPHP文を実行したいのですが・・・

<input type="button" onClink="<?php~?>">
でいけるかと思ったのですが、
ページ表示時に<?php~?>が実行されてしまい、うまくいきませんでした。

onClink="window.open(test.php)"
という方法以外でお願いします。

Aベストアンサー

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、遷移させることが大前提で動作します

ですから、ボタンを押してその場でJavaScriptと同じようにPHPが動くなんてことはありえません。
ボタンを押したらサーバーにリクエストする という動作ならば可能です。

つまり
質問で言われているような
onClink="window.open(test.php)"

<form name="f1" action="test.php" method="post">
<input type="submit" name="submit" value="submit" />
</form>
等のような形になります

こういった一般的な方法だと いちいち画面が切り替わったようになってしまうのを嫌って Ajaxでコレと同じことを、画面を切り替えずに行っているだけに過ぎません

AjaxはもともとJavaScriptの機能である非同期通信をつかったもので。Ajaxという言語があるわけではありません

Ajaxを利用するのであれば、JavaScriptのXMLHttpRequestを使って非同期通信できるような実装をしなくてはなりません
簡単にサンプルコードで書けるほど単純なものでもありません

一般的なサーバーサイドスクリプトの動作として、
ボタンを押す->サーバーへリクエストする->サーバーが処理する->クライアントに何かしらの結果を返す(出力する)です
つまり、PHP等のサーバーサイドスクリプトは、...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング