• 締切済み

Javascriptでnameの値を取得し繰返処理

wordpressで画像アップロードをJavascriptを使用して作成していますが、Javascriptのスマートな繰返処理の仕方を教えていただけないでしょうか。 現状は以下のように記述しており、正常に動作していますが、画像アップロードの項目を複数にしたく思います。 単純に下記のHTMLとJavascriptのセットを必要な数分増やせばできると思いますが、HTMLの項目を増やして、「media01」「media02」「media03」、「manager01」「manager02」「manager03」と数字部分が増やしたときにJavascriptは書き換えずにそれぞれ対応したものに値を返すようにしたいです。 クラスを取得して変数として保存して渡せば良いのだとは思うのですが、、、 Javascriptはまだまだわからないことだらけなのでお知恵を拝借できれば幸いです。 ▼HTML --------------------------------------------- <input name="manager01" type="text" readonly="readonly" value="<?php echo get_option('manager01'); ?>" /> <input type="button" name="media01" value="選択" /> <input type="button" name="media-clear" value="クリア" /> <div id="media"></div> --------------------------------------------- ▼Javascript --------------------------------------------- (function ($) { var custom_uploader; $("input:button[name=media01]").click(function(e) { e.preventDefault(); if (custom_uploader) { custom_uploader.open(); return; } custom_uploader = wp.media({ title: "Choose Image", /* ライブラリの一覧は画像のみにする */ library: { type: "image" }, button: { text: "Choose Image" }, /* 選択できる画像は 1 つだけにする */ multiple: false }); custom_uploader.on("select", function() { var images = custom_uploader.state().get("selection"); /* file の中に選択された画像の各種情報が入っている */ images.each(function(file){ /* テキストフォームと表示されたサムネイル画像があればクリア */ $("input:text[name=manager01]").val(""); $("#media").empty(); /* テキストフォームに画像の ID を表示 */ $("input:text[name=manager01]").val(file.id); /* プレビュー用に選択されたサムネイル画像を表示 */ $("#media").append('<img src="'+file.attributes.sizes.thumbnail.url+'" />'); }); }); custom_uploader.open(); }); /* クリアボタンを押した時の処理 */ $("input:button[name=media-clear]").click(function() { $("input:text[name=manager01]").val(""); $("#media").empty(); }); })(jQuery);

みんなの回答

  • int3
  • ベストアンサー率34% (65/190)
回答No.1

別にname使わなくてもよいので、同じ意味のものであればclassとか使えばいいんじゃないでしょうか。 01とか可変の部分もdataとかにいれとけば簡単かなと。 例えばhtmlはこんなで <input name="manager01" type="text" readonly="readonly" value="<?php echo get_option('manager01'); ?>" class="manager" data-id="01" /> <input type="button" name="media01" value="選択" class="media_select" data-id="01" /> javascriptのところはこんなとか <input name="manager01" type="text" readonly="readonly" value="<?php echo get_option('manager01'); ?>" class="manager" data-id="01" /> <input type="button" name="media01" value="選択" class="media_select" data-id="01" /> $("input.media_select").click(function(e) { selected_id = $(this).data('id'); ... $("input:text[name=manager" + selected_id + "]").val(""); $("input:text[name=manager" + selected_id + "]").val(file.id); $("input:button[name=media-clear]").click(function() { if(selected_id){ $("input:text[name=" + selected_id +"]").val(""); }

関連するQ&A

  • JavaScriptで電卓を作って一応完成はした

    のですが、分からないコードがあります。以下のコードです。 ~HTML~ <form name="dentaku"> <input type="text" name="line" value="0"> <input type="button" value="C" onclick="cl()"> <input type="button" value=" 7 " onclick="val(7)"> <input type="button" value=" 8 " onclick="val(8)"> <input type="button" value=" 9 " onclick="val(9)"> <input type="button" value="÷" onclick="keisan('/')"> <input type="button" value=" 4 " onclick="val(4)"> <input type="button" value=" 5 " onclick="val(5)"> <input type="button" value=" 6 " onclick="val(6)"> <input type="button" value="×" onclick="keisan('*')"> <input type="button" value=" 1 " onclick="val(1)"> <input type="button" value=" 2 " onclick="val(2)"> <input type="button" value=" 3 " onclick="val(3)"> <input type="button" value="-" onclick="keisan('-')"> <input type="button" value=" 0 " onclick="val(0)"> <input type="button" value=" ・ " onclick="val('.')"> <input type="button" value=" + " onclick="keisan('+')"> <input type="button" value="=" onclick="keisan('=')"> </form> ~JavaScript~ total = 0; input = ""; ope = "+"; flg = 1; function val(data) { flg = 0; input += data; document.dentaku.line.value = input; } function keisan(data) { if (flg == 0) { flg = 1; cf = total + ope + input; total = eval(cf); input = ""; document.dentaku.line.value = total; } if (data == "=") { total = 0; ope = "+"; } else { ope = data; } } function cl() { total = 0; ope = "+"; input = ""; document.dentaku.line.value = total; } 関係のないコードは省略してあります。また、CSSも省略しますが、テーブル要素を使わず以下の画像のようにインライン要素(input要素)の性質を利用して回り込みをさせています。 長くなりましたが、そこで質問なのですが、 (1)変数ope(operandの略)なのですが、初期値は+なのに演算子ボタン(上記のHTMLコード)をクリックすると、なぜ値がその演算子に変わるのか理由を教えて下さい。 何となく理由は分かりますが、はっきりと理解したいです。 (2)上記のHTMLコードをもっと簡単に書けませんか? 特にonclickをボタンの数だけ書くのは手間です。

  • JavaScriptでの足し算処理について

    本日よりJavaScriptに取り組んでいますが、いきなり足し算の処理でつまずきました。 下記の様にdeta1に10を入れ、計算ボタンを押すとdeta2に25が入るような処理を行いたいのですが、10が文字として認識されてしまうらしく、deta2が1015になってしまいます。 かなり基本的なことだと思いますが、どうすればよいか教えてください。 <script language="JavaScript"> <!-- function func1(){ document.test.deta2.value=document.test.deta1.value+15; } //--> </script> <form name=test> <INPUT type="text" name="deta1"> <INPUT type=button value="計算" onClick=func1()> <INPUT type="text" name="deta2"> </form>

  • JavaScriptのラジオボタン選択で値取得

    JavaScriptでフォームのラジオボタン選択で選択した項目に応じて、複数の変数に特定の数値を入れたいのですが、どうしたらいいでしょうか? ラジオボタンで仮に、 ・東京 ・大阪 ・名古屋 という選択があったとして、 (そのボタンの下部に<input type="button" value="Go!" onclick="hogehoge();">というような実行ボタンがあったとします) 東京を選んだ場合は、 a = 4; b = 3; 大阪を選んだ場合は、 a = 3; b = 2; 名古屋を選んだ場合は、 a = 5; b = 4; と、a/bに数値を入れたいです。 今現在下記のように書いたのですが、動作しません。 <script type="text/javascript"> function hogehoge() { no = document.hoge.a.value - 0; if(no == 1) { n1 = 4; n2 = 3; }else if(no == 2) { n1 = 3; n2 = 2; }else if(no == 3) { n1 = 5; n2 = 4; } document.hoge.no1.value = n1; document.hoge.no2.value = n2; } </script> <form name="hoge"> <input type="radio" name="a" value="1" checked>東京 <input type="radio" name="a" value="2">大阪 <input type="radio" name="a" value="3">名古屋 <br> <input type="button" value="Go!" onclick="hogehoge();"><br> <input type="text" size="5" name="no1"><br> <input type="text" size="5" name="no2"> </form> よろしくお願いいたします。

  • 画面上のコントロールの値が取れない。

    JavaScriptで画面上のコントロールの値をすべて取得して、 HTTPハンドラ(C♯で作成)をリクエストし、計算結果を持ってきたいと思っています。 以下のように作りました。 $(function(){ $("[type='button']").click(function(){ var postData = {}; $("[name='specForm']").find(':input').each(function(){ postData[$(this).attr('name')] = $(this).val(); }); $.ajax({ type: "POST", url: "test.ashx", data: postData, dataType: "json", success: function(data, dataType){ $("span.testspan").text(data.value); } }); }); }); しかし、テキストボックスの値は取れるのですが、チェックボックスが どうやっても「on」という値でPOSTされて来てしまうので、困っています。 きちんと値を取るにはどのように書けば良いか、ご教授いただけないでしょうか。

  • name属性に[]付の名前を指定した処理

    理由があり、下記の様にname属性に配列(?)を指定しています。(下記はスクリプトエラーになります。) <HTML> <HEAD> <script language="JavaScript"><!-- function input(obj1, obj2) { obj2.value = obj1.value } // --></script> </HEAD> <BODY> <FORM name="myform"> <INPUT type="text" name="text[1]" onchange="input(this, document.myform.text[2])" /> <INPUT type="text" name="text[2]" onchange="input(this, document.myform.text[1])" /> </FORM> </BODY> </HTML> 当然ながら、text[1]をtext1にし、text[2]をtext2にすれば全く問題無く動作します。nameとしてこのままtext[n]のままでこのエラーを回避するにはどうしたらいいのでしょう。以上、よろしくお願いします。

  • javascript初心者です。

    javascript初心者です。 下記のソースコードで、単純に、マウスホーバーで、テキストの内容を切り替えるものですが、 IE8ですと動作しますが、Firefox3.5だと動作しません。 なにか、原因あるのでしょうか。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>無題ドキュメント</title> <script language="javascript" type="text/javascript"> function formcalc(formobj){ var val_a= formobj.elements["para_a"].value; var val_b= formobj.elements["para_b"].value formobj.elements["answer"].value = val_a * val_b } function chktext(){ var obj = document.getElementById("id1"); obj.innerText="テキスト変更しました。"; } </script> </head> <body> <form> <input size="10" type="text" name="para_a" value="0" />× <input size="10" type="text" name="para_b" value="0" />= <input size="10" type="text" name="answer" /><br /> <input type="button" name="keisan" value="計算" onclick="formcalc(this.form)" /> </form> <br /><br /><br /><br /> <p id="id1" onMouseOver="this.innerText='受付終了'">最初のテキスト</p> </body> </html>

  • クリアボタンの動作について

    ご存知の方、ご教授くださいm(__)m 現在、画面上で入力された項目を消去するためにクリアボタンを設置しています。 フォーム中の、 ・通常のテキストボックスの内容:消去 ・disabledのテキストボックスの内容:消去せずそのまま ・チェックボックスはchecked=falseにする としたいと考えているのですが、javascriptでうまく動かせていません。今書いているコードは下記のようなものです。 $(document).ready(function () { $('.buttons :button[name=clear]').click(function() { $('.inputs :input:visible').val(''); return false; }); これを改良してうまく動くようにすることは可能でしょうか。 よろしくお願いいたします。

  • javascript 乱数が取得できない

    はじめまして。 一月ほど前から「パズルネット ソフィア」 http://www.pori2.net/js/number/4.html というサイトでjavascriptの基礎を学んでいるのですが、乱数 を扱う段階になって自分の作成したプログラム(以下) <html> <head> </head> <body onload="Mondai()"> <form name="quiz"> <input type="text" value="" > <input type="button" value="赤" onclick="Push(0)"> <input type="button" value="青" onclick="Push(1)"> <input type="button" value="黄" onclick="Push(2)"> <input type="button" value="緑" onclick="Push(3)"> <input type="button" value="白" onclick="Push(4)"> </form> <script type="text/javascript"> <!-- var col=new Array("red","bleu","yellow","green","white"); var Rnd; function Mondai(){ Rnd=Math.floor(Math.random() * 5 ); document.quiz.element[0].value=col[Rnd]; } function Push(num){ var n=parseInt(num); if( n==Rnd ){ Mondai(); }else{ alert("違います。"); } } // --></script> </body> </html> を実行してもテキストボックス内に何の値も表示されず 、ボタンを押しても「違います。」とだけしか出てきません。 ブラウザはfirefoxを使用しており、javascriptの設定もonに なっています。 カンマや鍵括弧などの記号にも打ち間違いがないかサンプル プログラムを参考にしながら確認してみたのですが、どこにも おかしな点はありませんでした。 サンプルプログラムは下記のとおりで、こちらは正常に実行されます。 <body onload="Mondai()"> <form name="quiz"> <input type="text" value=""> <input type="button" value="赤" onclick="Push(0)"> <input type="button" value="青" onclick="Push(1)"> <input type="button" value="黄" onclick="Push(2)"> <input type="button" value="緑" onclick="Push(3)"> <input type="button" value="白" onclick="Push(4)"> </form> <script type="text/javascript"> <!-- //色名の英単語を配列に入れる var col=new Array("red","blue","yellow","green","white"); //乱数を入れる変数 var Rnd; //テキストボックスに問題文(色名)を表示する関数 function Mondai(){ //0~4までの乱数を発生させる Rnd=Math.floor( Math.random() * 5 ); document.quiz.elements[0].value=col[Rnd]; } //正誤判定関数 function Push(num){ //引数を数字に変換 var n=parseInt(num); //正解なら次の問題を表示、間違っていたらアラートを表示する if ( n == Rnd ){ Mondai(); }else{ alert("違います!"); } } // --> </script> どなたかアドバイスをいただけないでしょうか? よろしくお願いします。

  • JavaScript+PHPでのボタンの値について

    お世話になります。現在下記のようなコードです。 #Html側 <script language="JavaScript"><!-- function send1() { document.Form1.submit(); } function send2() { document.Form2.submit(); } // --></script> <form name="Form1" action="tesuto1.php" > 中略 </form> <form name="Form2" action="tesuto2.php" > 中略 </form> <form> <input type="button" name="botan" value="送信" onClick="send1()"> </form> <form> <input type="button" name="botan" value="取消" onClick="send2()"> </form> <form> <input type="button" name="botan" value="確認" onClick="send1()"> </form> #PHP側 tesuto1.php echo "値は".@$_POST["botan"]."です"; という感じで、どのボタンがクリックされたか判別するために、 ボタンの値を取得したいのですが。 よろしくお願いします。

  • javascriptで取得した値をテキストボックスに・・・

    IE5.5です。 javascriptで取得した値をテキストボックスに格納したいのですが、 うまくいきません。 <SCRIPT language="javascript"> var varVal=true </script> <form> document.write("<input type='hidden' name='myVal' vaue="+varVal+">"); </form> javascriptが初心者でよくわからないのですが、 例えば <input type="hidden" name="myVal" value=varValに格納された値> といった書き方もできるのでしょうか? よろしくご教授願います。