質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2709閲覧

Jqueryのhidden項目を入れ替えたいのですが、うまくいきません

hidepon

総合スコア206

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2015/11/09 14:21

編集2015/11/10 03:03

$('.str_size').click(function(){
var index =$(".str_size").index(this);
var pos ="";
var j=0;
jQuery.each(data, function(i, val) {
if(j == index){
pos = i;
size_name = val;
}
j++;
});
var str = "#s_name" + prm;
var sh_name = "size_code[" + prm + "]";
$(str).html(size_name);
$('<input>').attr({
type: 'hidden',
id: 'size' + prm,
name: sh_name,
value: pos
}).appendTo('table#tbl_size');
return false;
});
ボタンを押すとhidden項目を追加するのですが、
ボタンを押すごとに同様の項目が追加されてしまいます。
ボタンが2個の時は2個、3個の時は3個のhidden項目を設定したいです。
どのようにしたら良いでしょうか?
prmはボタンの番号に相当します。
よろしくお願いいたします。
※追記します。

<table style="text-align:left;" border="1" cellpadding="2" cellspacing="2" id="tbl_size" class="tbl_info"> <tbody> <tr> <th></th><th>T11</th><th>T12</th><th>T13</th><th>T14</th> </tr> <tr> <td><span id="s_name0"></span><input name="size_item" class="size_item" value="サイズ選択" type="button"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> </tr> <tr> <td><span id="s_name0"></span><input name="size_item" class="size_item" value="サイズ選択" type="button"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> <td><input name="size_val[]" maxlenth="5" type="text"></td> </tr> </tbody> </table> <input type="button" id="add_size_table" value="追加する" /> というテーブルがあり、ボタンを押すと行が追加されます。 テーブル内のボタンを押すとポップアップが開き、選択項目が表示されます。 その項目を選択するとspanタグの中に文字情報として挿入されて、 hidden項目が追加されます。 入力画面では問題ないのですが、エラー画面で項目を入れ替えようとテーブル内のボタンを押して ポップアップの内容を選択するたびにhidden項目が無限に増えてしまいます。

上記のプログラムはポップアップの一覧から選択した部分からのコードです。
よろしくお願いいします。
※追記
入力画面とエラー画面があります。
submitしてエラー画面に遷移した際に不具合が生じています。
エラー画面ではPHPでhidden項目を記述しています。
内容を変更しようとテーブル内のボタンを押して変更(Jqueryで)した際にhidden項目がどんどん増えれてしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tozjp

2015/11/10 00:21

ボタンが2個とか3個の意味がよくわかりません。ボタンの数が変わるのですか?変数 data がどこから来たどのようなデータなのか、それと HTML 部分も書いたほうが何がしたいのかイメージしやすいです。何か無駄に遠回りなやり方をしているような雰囲気もありますが、そのへんも含めてアドバイスしにくい状態です。
tozjp

2015/11/10 01:48

「3個のhidden項目」というのは、「hiddenを3個増やしたい」? 「hiddenを合計3個にしたい」? 「"3個"という(値を持った)hidden」? appendTo を使用していますが、「追加されてしまいます」「無限に増えてしまいます」ということは、append (追加) がしたい訳ではないということでしょうか。 ポップアップを開くと rpm に値がセットされて、ポップアップ内には「1個」「2個」「3個」などのボタンが並んでいてそれをクリックしたあとの処理がご質問内容のコードということでいいでしょうか。 ご提示いただいた HTML をビフォーとして、ある操作を行ったあとの理想とするアフターを書いてもらってもいいですか?
hidepon

2015/11/10 02:07

追記事項にあるように、ボタンを押すと行が追加されます。テーブル内のボタンを押すと、ポップアップが開いて一覧が表示され、そのリンクをクリックするとポップアップが閉じて、内容がspanタグの部分に挿入されます。と同時にhiddenで項目が追加されます。 ところが、入力画面では問題ないのですが、エラー画面では上書きされずに、繰り返した回数の数だけhidden項目が増えてしまいます。
guest

回答2

0

ベストアンサー

.append(), .appendTo() は追加処理です。
入力画面の方でも押すたびに増えていると思います。
(同名のため送信されるのは最後に追加した要素のみかも知れませんが)

上書きしたいなら前回追加したものを削除するか、最初から hidden を用意しておいて.val()を使用して値のみを書き換えるのがいいと思います。

より詳細な回答は修正依頼に書いた質問の答えをいただかないと難しいです。

投稿2015/11/10 04:14

tozjp

総合スコア790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

To: hidepon さん

ボタンが2個の時は2個、3個の時は3個のhidden項目を設定したいです。

<input name="size_val[]" maxlenth="5" type="text"> の数だけ <input type="hidden"> をHTML上に書いておき、jQuery のセレクタで要素ノードを参照してはどうでしょうか。

ところで、class="str_size" な要素はどこにあるのでしょうか。

投稿2015/11/10 00:48

think49

総合スコア18164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問