お世話になります。
JQuery初心者です。
3日程、ハマリ、行き詰まったので、相談させて下さい。
アマゾンのレビューの「レビューは参考になりましたか?」「はい」「いいえ」の
様なものを作りかけています。
その際、以下の様な記述をしています。
(肝心な部分抜粋)
----------------------------------------------
大元 正常に稼働
----------------------------------------------
<!-- JQuery -->
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){
$("#form1").submit(function() { //●●●この #form1 の部分を変数にしたい
var str = $(this).serialize();
処理
}};
-->
</script>
</head>
<body>
<form id="form1" method="post" action=""> //●●●#form1とはコノ部分
<select name="option">
<option value="yes" selected>参考になった</option>
<option value="no">参考にならなかった</option>
</select>
<input type="submit" name="submit" value="投票する"/>
</body>
</html>
----------------------------------------------
上記の記述で正常に稼働しています。
が、1つのページにフォームを複数作り、それぞれのフォームにIDをふって、
それぞれ正常に稼働させたいのです。
そこで、javascriptの
$("#form1").submit(function() {
ここの #form1 部分を変数にして、複数のフォームに対応させたいと思っています。
が!
以下の様に改良したところ、正常に稼働しません。
----------------------------------------------
以下、改良部分 うまく稼働せず
----------------------------------------------
-------javascript部分
$("input").click(function(){ //●●●ここを改良 変数作成
id2= $(this).attr("class");
sharp="#form";
id3 = sharp + id2;
});
$("id3").submit(function() { //●●●ここを改良 変数指定
-------フォーム部分
<form id="form1" method="post" action="">
<input type="submit" name="submit" value="投票する" class="1"/> //●●●ここを改良 class="1" を追加
-------------------------------------------------
つまり、classの「1」をjavascript部分で読み取って、#form の文字列と組み合わせて #form1
として、機能させたいのですが、うまくいきません。
(何故か、$("#form"+id2) の部分がうまく機能しません。)
※要は複数のフォームのidに、1つのjavascriptで対応させたいだけで、
上記の様な、まわりくどいやり方には全くこだわっていません。
どうか、迷える子羊に愛の手を!
No.3ベストアンサー
- 回答日時:
こんにちは。
何度もすいません。
$('form').submit ( function() {
alert ( $(this).attr('id') );
return false;
});
スマートにこれでも良いですね。
わざわざeach()を使う必要ありませんでした。
重ね重ね、ありがとうございます!
>わざわざeach()を使う必要ありませんでした。
>スマートにこれでも良いですね。
なるほど!
こちらの方がサーバー負荷が少なそうですね!
こちらを元に改造させていただきます!
ありがとうございます!
No.2
- 回答日時:
こんにちは。
動かなかった部分ですが、括弧内でどうのこうのというより
$(id3).submit(function() {
});
では無いでしょうか。
$('id3')ではid3というタグをセレクトしている気がします。
’’で囲っているため
ご指摘、ありがとうございます!
>括弧内でどうのこうのというより
>$(id3).submit(function()
実験したみたところ、おっしゃるとおりでした!
単に「’’」や「""」で囲っているため、3日間、悪戦苦闘していたのでした!(泣)
勉強になりました!
No.1
- 回答日時:
こんにちは。
全てのformを対象にして良いなら以下のような感じになると思います。
(ちなみにclass名に数字だけは良くないです)
以下のサンプルはボタンを押すとsubmitが実行され、そのフォームのidを表示しています。
$(this).submit(funciton() {
});
ここに処理を書けば、全てのフォームで同じものを実行できます。
==== HTML
<form id="form1">
<input type="submit" value="form1" />
</form>
<form id="form2">
<input type="submit" value="form2" />
</form>
<form id="form3">
<input type="submit" value="form3" />
</form>
<form id="form4">
<input type="submit" value="form4" />
</form>
==== JavaScript
$().ready ( function() {
$('form').each ( function() {
$(this).submit ( function() {
alert ( $(this).attr('id') );
return false;
});
});
});
回答ありがとうございます!
その様なシンプルで洗練された方法があるとは全く思いつきませんでした。
早速、教えていただいたメソッドを組み入れて改造したいと思います。
重ね重ね、ありがとうございます!
ちなみに、何故、私が改造した方法で、うまくいかなかったか、先ほど判明しましたので、ご報告します。
つまり、
$("id3").submit(function() {
何故、上記 $("id3")の部分に、変数id3の値が代入されなかったかです。
実験として直前に、わざと
id3="#form1";
$("id3").submit(function() {
とやっても、うまく稼働しませんでした。
(つまり、変数id3の値が $("")の中で展開されていない)
そこで、これは
$("id3").submit(function() {
を起点にして稼働しはじめるのだから、それ以前の変数の値は関係なくなるのかな?
との着想の元、この行の前に
$("input").click(function(){
を入れて、これ起点で起動させ、これにつづけて、
id3="#form1";
をかませる事によって、
$("id3").submit(function() {
が、うまく稼働しはじめました。
以上、何故変数の値が括弧内で展開されなかったか、ご報告させていただきました。
(もし、この推論が間違っていたらご指摘下さい)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力フォームの値をQRコードで...
-
PDFを(htmlのように)無限に縦...
-
バッチファイル 特定ウインドウ...
-
GASでスプレッドシートの一番上...
-
要素内を常に一番下を表示させたい
-
1枚の画像をクリックすると複数...
-
bxsliderで最初に縦に複数表示...
-
正規表現で、特定の文字列を含...
-
ワードでA3横の画面にして、文...
-
Base64に変換したHTMLの<script...
-
Ajax サーバーに負荷かかります...
-
php の画面ボダンを押すと、サ...
-
bxsliderで複数のvimeoスライド...
-
bxSliderで動画をスライドごと...
-
C言語のflagの使い方が分かりま...
-
データ受け渡しについて
-
webページの特定の部分だけ消し...
-
同一ページ移動時ハンバーガー...
-
ナイトボットのAliasについて
-
これってなんの電話かわかりま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ajaxからphpにpsotしたときの日...
-
JavascriptからPHPへのAjax通信...
-
jQueryのblockUIをformのボタン...
-
JSONをperlで受け取る方法
-
jQueryを使いformでsubmitした...
-
jQuery を外部ファイルから呼び...
-
Ajax サーバーに負荷かかります...
-
jquery,ajaxによるphp通信でnull
-
jquery × php × mysql 非同期で...
-
jQueryで外部テキストファイル...
-
jQuery,Ajaxでcgiに接続する方...
-
jQuery3 reset()が効かない。
-
eval、$.eachで順番が入れ替わ...
-
Ajax・jQueryでGET時にIE...
-
ページを遷移せずにデータ送信
-
Ajax・jQueryでGETとPOSTする方法
-
ime入力中にcssを変更する方法
-
Ajaxでフォームデータを連続登...
-
AjaxでJSONを受信すると、文字...
-
JQueryの変数の扱いで弱ってい...
おすすめ情報