
お世話になります。
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jQuery を外部ファイルから呼び...
-
jquery,ajaxによるphp通信でnull
-
ajaxでPHPにPOST送信して結果デ...
-
ajaxを使ったページがSEOで不利...
-
JavascriptからPHPへのAjax通信...
-
ajaxでPHPにPOST送信して結果デ...
-
ajax + PHPによるエラーの返し...
-
ajaxでページ全体がコピーされ...
-
jqueryでAJAX非同期通信をしてp...
-
Ajaxでフォームデータを連続登...
-
JQueryの変数の扱いで弱ってい...
-
Ajax・jQueryでGETとPOSTする方法
-
IE8 form action属性をはずす...
-
Ajax サーバーに負荷かかります...
-
jQueryを使いformでsubmitした...
-
Javascriptを使ってQRコード読...
-
JavaScriptでtabindexの変更っ...
-
SQLのmaxで求めた値を変数に代...
-
インラインフレームを自動更新...
-
スライドを最後の画像で止めたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jQueryで外部テキストファイル...
-
JavascriptからPHPへのAjax通信...
-
jQueryのblockUIをformのボタン...
-
Ajax サーバーに負荷かかります...
-
ajax + PHPによるエラーの返し...
-
AjaxでJSONを受信すると、文字...
-
ajaxからphpにpsotしたときの日...
-
jQuery を外部ファイルから呼び...
-
Ajaxについて
-
jquery,ajaxによるphp通信でnull
-
JSONをperlで受け取る方法
-
ajaxでPHPにPOST送信して結果デ...
-
ajaxを使ったページがSEOで不利...
-
Ajaxでフォームデータを連続登...
-
jqueryでAJAX非同期通信をしてp...
-
Perl JavaScript Ajax リアルタ...
-
Ajax・jQueryでGETとPOSTする方法
-
ajaxでページ全体がコピーされ...
-
ajaxでPHPにPOST送信して結果デ...
-
IE8 form action属性をはずす...
おすすめ情報