![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
Formの中でボタンを使わずに、<a href=...> を使って、POSTしたいのですが、
ネット上で、こうすれば出来るという回答が何件も出ています。
<form action="input.html" method="post" name="F1">
<input type="text" size="10" />
<a href="javascript:document.F1.submit()"><img src="btn.png"></a>
</form>
これがDBの検索結果の行数分、table上で発生するため、
name="F1"の値をユニークにしなければならないので困っています。
phpであれば、nameの値を変数にするとかも簡単に出来ると思うのですが、
Javascriptのフレームワーク上で動作する環境なので、他の方法でなんとかしなければなりません。
ボタンをCSSで変更して、img以下の画像に置き換える方法も考えましたが、フレームワークで使用しているアイコンのパスが簡単に参照できないので諦めました。
nameを使わずに、リンクを貼る書き方がもし有りましたら、教えて頂けないでしょうか?
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
少々汎用的に、特定ハッシュ(#submit)のリンクでボタンの代用する書き方
<script>
document.addEventListener('click', function(ev){
_ var C = function(e,n){ while(e && e.tagName!=n) e=e.parentNode; return e }; // 先祖をたどる処理
_ var anchor = C(ev.target, 'A');
_ if (!anchor) return; // クリック対象(の先祖)が <a> なら処理対象
_ var cmd = anchor.getAttribute('href');
_ if (cmd == '#submit') {
_ _ ev.preventDefault();
_ _ var form = C(anchor, 'FORM');
_ _ if (form) form.submit(); // <a> の先祖が <form> なら送信
_ }
}, false);
</script>
<form action="input.html"><input name=q type=text><a href="#submit"><img src="送信.png"></a></form>
<form action="input.html"><input name=q type=text><a href="#submit"><img src="送信.png"></a></form>
<form action="input.html"><input name=q type=text><a href="#submit">テキストリンクで送信</a></form>
<form action="input.html"><input name=q type=text><a href="#submit">テキストリンクで送信</a></form>
Ogre7077さん コメント有難うございました。
私の力量では、jqueryのコードが完全に理解できていませんが、動作しました。
きちんと各行とも別々の値を渡してsubmitされています。
素晴らしいですね。
大変助かりました。どうも有難うございます。<(_ _)>
No.2
- 回答日時:
sbumitはaからの相対位置さえ理解すればできますが、
inputにnameがなければ送られませんよ
<form action="input.html" method="post">
<input type="text" name="hoge" size="10" />
<a href="#" onclick="this.parentNode.submit()"><img src="btn.png"></a>
</form>
yambejpさん コメント有難うございました。
inputタグのnameはとりあえず同じ名前で付けてみたのですが、駄目でした。
フレームワーク上での動作のせいなのか、リンク先が特定できずトップページに飛んでしまいます。これをユニークにしなければならないとしたらformのnameと同じことになりますので、現在の環境下では残念ながら使えないようです。
どうもお手数をお掛けしました。<(_ _)>
No.1
- 回答日時:
こんにちは
複数の似たようなフォームが存在して、nameを利用せずに「ボタンを押したらそのフォームをサブミット」したいということですよね?
以下のような方法で実現できると思いますが、ご提示のようにinput要素にname属性がないと値が送られない可能性があると思いますけれど・・・
※ ボタンを包含するリンク要素は必要ないので省略しました。(あっても構いません)
※ class="submit_button"の設定がある画像要素をクリックすると、その祖先要素のフォームをサブミットします。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style type="text/css">
img.submit_button { cursor: pointer; }
</style>
<script type="text/javascript">
document.addEventListener("click", function(e){
var t = e.target;
if(t.nodeName != "IMG" || !t.classList.contains("submit_button")) return;
while(t && t.nodeName != "FORM") t = t.parentNode;
if(t) t.submit();
}, false);
</script>
</head>
<body>
<form action="input.html" method="POST">
<input type="text" size="10" />
<img src="btn.png" class="submit_button" />
</form>
<form action="input.html" method="POST">
<input type="text" size="10" />
<img src="btn.png" class="submit_button" />
</form>
</body>
</html>
fujillinさん コメント有難うございました。
inputタグのnameはとりあえず同じ名前で付けてみたのですが、駄目でした。
これをユニークにしなければならないとしたらformのnameと同じことになりますので、現在の環境下では残念ながら使えません。
どうもお手数をお掛けしました。<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームが空欄の時にフォーム...
-
focus()が上手くいかない
-
別ウィンドウへのsubmitの挙動...
-
submitした値を返したい
-
formのsubmitイベントの発生に...
-
複数のフォームを一括で自動送...
-
ダウンロードボタンについて
-
chromeでフォームの値が取得で...
-
1つのページにformを2つ設置。2...
-
HTML?JavaScript? INPUTタグ...
-
javascriptでASPにデータを渡す
-
Javascriptに条件分布ついて(再)
-
submit後のフォームデータの書...
-
JavaScript動作仕様の変更!?
-
return trueとreturn falseの用...
-
value内に変数を入れたい
-
プルダウン 項目が多いので先頭...
-
【jQuery】input nameの文字列...
-
tableの任意行にfocusをあてる
-
select要素のvalueを配列で取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FormのonsubmitでJavaスクリプ...
-
submitした値を返したい
-
javascriptでASPにデータを渡す
-
1つのform内に2つのsubmitボタ...
-
別ウィンドウへのsubmitの挙動...
-
複数のフォームを一括で自動送...
-
POST時に要素を削除してからPOST
-
iframe内のformをサブミットす...
-
focus()が上手くいかない
-
1つのページにformを2つ設置。2...
-
添付ファイルの未選択チェック方法
-
Chromeの document.getElementB...
-
1つのformで複数のactionをボタ...
-
C# 配列などの受け渡し
-
ENTERキーを無効にしたいのです...
-
フォームが空欄の時にフォーム...
-
別窓ウィンドウから親ウィンド...
-
submitボタン押下後、disabled...
-
Javascript IEで「識別子があり...
-
迅速なご回答ありがとうござい...
おすすめ情報