1つのファイル上で複数のjavascriptを作動

このQ&Aのポイント
  • 1つのファイル上で複数のJavaScriptを作動させる方法について説明します。
  • 同じページに複数のJavaScriptを配置する方法について解説します。
  • 複数のJavaScriptを分離して動作させる方法について紹介します。
回答を見る
  • ベストアンサー

1つのファイル上で複数のjavascriptを作動

ボタンを押したり、キーを入力すると別ファイルを呼び出すjavascriptがあります。 今回、同じページに同スクリプトを2つ設置しました。 ********************************************* 【Script1】 キーを入力すると./find.phpを呼び出す ********************************************* <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type='text/javascript'> $(document).ready(function(){ $("#search_results").slideUp(); $("#search_button").click(function(e){ e.preventDefault(); ajax_search(); }); $("#search_term").keyup(function(e){ e.preventDefault(); ajax_search(); }); }); function ajax_search(){ $("#search_results").show(); var search_val=$("#search_term").val(); $.post("./find.php", {search_term : search_val}, function(data){ if (data.length>0){ $("#search_results").html(data); } }) } </script> ************************************************* Script 1 を呼び出すキー入力画面 ************************************************* <form id="searchform" method="post"> <input type="text" name="search_term" id="search_term"/> <input type="submit" value="全表示" id="search_button" /> </form> ********************************************* 【Script 2】 キーを入力すると./find_op.phpを呼び出す ********************************************* <script type='text/javascript'> $(document).ready(function(){ $("#search_results_op").slideUp(); $("#search_button_op").click(function(e){ e.preventDefault(); ajax_search(); }); $("#search_term_op").keyup(function(e){ e.preventDefault(); ajax_search(); }); }); function ajax_search(){ $("#search_results_op").show(); var search_val=$("#search_term_op").val(); $.post("./find_op.php", {search_term : search_val}, function(data2){ if (data2.length>0){ $("#search_results_op").html(data2); } }) } </script> ************************************************* Script 2 を呼び出すキー入力画面 ************************************************* <form id="searchform_op" method="post"> <input type="text" name="search_term_op" id="search_term_op" /> <input type="submit" value="全表示" id="search_button_op" /> </form> ********************************************* 問題点 「Script 1 を呼び出すキー入力画面」上で文字を入力したりボタンを押したりすると、なぜかScript2が稼働してしまいます。 1つのページの中で、「Script 1」「Script2」がそれぞれ別々に稼働するためにはどこを変更すればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#247307
noname#247307
回答No.1

Ajaxでデータを取得するための処理が、どちらもajax_search関数になっています。おそらくそれで1つ目のajax_search関数が、2つ目のajax_searchで上書きされているのでしょう。 2つ目のajax_search関数と、これを呼び出している部分の名前を変更すれば動くと思います。 それと、直接は関係ありませんが、できれば$(document).readyの処理は1つにまとめたほうがいいと思いますよ。メンテナンスもしやすいですし。

tajix14
質問者

お礼

ありがとうございます。 下記で出来ました。 本当にありがとうございました。感謝します。 <script type='text/javascript'> $(document).ready(function(){ $("#search_results").slideUp(); $("#search_button").click(function(e){ e.preventDefault(); ajax_search(); }); $("#search_term").keyup(function(e){ e.preventDefault(); ajax_search(); }); }); function ajax_search(){ $("#search_results").show(); var search_val=$("#search_term").val(); $.post("./find.php", {search_term : search_val}, function(data){ if (data.length>0){ $("#search_results").html(data); } }) $("#search_results_op").slideUp(); $("#search_button_op").click(function(e){ e.preventDefault(); ajax_search2(); }); $("#search_term_op").keyup(function(e){ e.preventDefault(); ajax_search2(); }); }); function ajax_search2(){ $("#search_results_op").show(); var search_val=$("#search_term_op").val(); $.post("./find_callput_op.php", {search_term_op : search_val}, function(data2){ if (data2.length>0){ $("#search_results_op").html(data2); } }) } </script>

関連するQ&A

  • ime入力中にcssを変更する方法

    googleのように文字を入力したら、cssを変更して レイアウトを変更したいと考えております。 現在、jqueryを使ってcssを変更しているのですが、 firefoxで一文字目を入力すると表示されな現象に陥りました。 どなたかわかる方、ご教授お願いいたします。 <js>-------------------------------------------------------------------------------- $(function(){ var q=$('input#q'); q.focus(); q.keyup(function(e){ e.preventDefault(); ajax_search(); }); //Firefox IME q.bind('text',function(e){ e.preventDefault(); //console.log(this.value); ajax_search(); }); function ajax_search(){ if(q.val().length>0){ if(!$('#body').hasClass('search')){ q.css({margin:0,position:'absolute',top:'100px','zIndex':'999'}); } $('div#body').addClass('search'); } } }); </script> <html>-------------------------------------------------------------------------------- <div id="body"> <input type="text" name="q" id="q" value="" /> </div>

    • ベストアンサー
    • AJAX
  • 遠隔サーバー情報取得後発動のjavascript

    スマートフォンアプリをjavascriptで作っております。 ●【現在できていること】 【1】まずは、アプリ内から、自分の端末情報(下記の場合「G:8116556330」(取得方法はappleのシステムに準ずる)を取ります。(下記はわかりやすくするために固定で記載してますが、実際にはjavascriptによる読み込みとなります) 【2】次に、そのデータに関する情報を、自社サーバーのデータに取りに行きます。 ( $.post("https://hoge.jp/search.php", {search_term : name_id}, function(data)) 【3】その情報を表示させます。 【現在の仕様】 【3】を表示させるためには【1】【2】が完全取得された後に【3】用のfunctionを発動させなければなりません。 【1】取得のタイムラグ、【2】取得のタイムラグ、およびサーバーから端末までのタイムラグがあることから、現在、下記のようにbodyが読み込まれて5秒後に「document.getElementById('search_button2').click();」の形で時差クリックさせ「.click(function(e)」を発動させて【3】を表示させています。 【困りごと】 上記の方法だと、回線の混雑にかかわらず5秒後にクリックが発動されてしまうため、混雑時には表示できないリスクがあります。 【やりたいこと】 サーバーから端末に完全に情報を取得出来てから、即座に【3】用のfunctionを発動させたいです。または、クリックなど使用せず下記のGETスクリプト内で自動発動する方法があれば尚嬉しいです。 HTMLの読み込み後であればonloadが使用できますが、サーバー情報取得後というのが分かりません。ご指導いただきたくお願いいたします。 【GETスクリプト】 <script type="text/javascript"> var name_id; name_id = 'G:8116556330'; $(document).ready(function(){ $("#search_button2").click(function(e){ e.preventDefault(); ajax_search(); }); }); function ajax_search(){ $("#search_results").show(); $.post("https://hoge.jp/search.php", {search_term : name_id}, function(data){ if (data.length>0){ $("#search_results").html(data); } }) } </script> 【時差スクリプト(body読み込み後5秒後にボタンをクリック)】 <SCRIPT language="JavaScript"> function loadHello(){  document.getElementById('search_button2').click(); }  setTimeout(loadHello, 5000); </script> 【Body要素 ボタン 表示場所】 <body onLoad="loadHello()"> <a id="search_button2">search_button2</a> <div id="search_results"></div> </body>

  • Jqueryの$.getで目当ての外部ファイルを読

    jqueryの$.getで目当ての外部ファイルを読み込む方法でつまづいてしまいました。 searchファイル (resultsファイルを非同期通信で読み込むはずなのですが、読み込んでくれません。) <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> function getContents(){ //http://localhost/hoge/results/color_id:をブラウザ上で開くとファイルが返ってきます var http = $.get("http://localhost/hoge/results/color_id:",null, function(data) {$("#main").html(data);}); } </script> //読み込んだデータが表示される箇所なんですが・・・ <div id="main"></div> http://anond.hatelabo.jp/20101206224349 このサイトに書かれているとおりに外部のHTMLを読み込む事むJqueryを書いたのですが、全く反応してくれません。 何か間違っているのでしょうか?

  • javascriptで別ファイルで変数を取得する。

    A.htmlで入力した文字をB.htmlに出るようにしたいのですが、全然出ません。 アラートは表示されるのですが、入力欄に何を打っても、 namae と出てしまいます。変数に何も入ってないようです。 これを〔javascript〕って入力すれば、アラートに〔javascript〕って出るようにしたいのですが、どうしたらよろしいでしょうか? 〔A.html〕 <script type="text/javascript"> var val=namae; window.localStorage.setItem("result", val); </script> <form action="B.htm" id="form1" method="post" onsubmit="check()"> <p>名前<br><input type="text" name="namae" id="buttom" size="28" /></p> <input type="submit" value="送信"/> </form> 〔B.html〕 <script type="text/javascript"> var val = window.localStorage.getItem("result"); alert(val); </script>

  • jQueryでAJAXを利用しJSONデータを取得

    商品コードを入力したら、AJAXで商品名と価格を取得して表示させ、それを確認して個数を入力して注文票を作ろうとしています。 商品名だけの取得は何とかできたのですが、商品名と価格といったように複数データを取得するのに苦労しています。 独学のプログラミングなので初歩的な所が分かっていないのだろうと思いますが、JSON形式で受け取ればいいのだろうと考えて、そうしているのですが、うまくいきません。 下記は、商品名だけなら取得できているコードですが、どこを修正したらいいでしょうか。 よろしくお願いします。 ファイル名:test1.php <html> <head> <title>test</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script> <script type='text/javascript'> $(document).ready(function(){ $("#goodsid").keyup(function(e){ var search_val=$("#goodsid").val(); $.post("./SubTest1.php",{search_term : search_val},function(data){$("#goodsname").html(data);}) }) }); </script> </head> <body> <form id="searchform" method="post"> <div> <label>商品番号</label> <input type="text" name="goodsid" id="goodsid" /> </div> </form> <div id="goodsname"></div> <div id="goodsprice"></div> </body> </html> ファイル名:SubTest1.php <?php ini_set("default_charset","utf-8"); // MySQLクラスファイルの取り込みとインスタンスの作成 require_once("../mysql.php"); $mysql = new MySQL; $term = $_POST["search_term"]; $sql = "SELECT goods_name,goods_price FROM `goods_table` WHERE goods_num ='".$term."'"; $mysql->query($sql); $row = $mysql->fetch(); // ここまででデータを取得している if ($row){ $goodsname = $row['goods_name']; }else{ $goodsname = ""; } echo $goodsname; //呼び出し元のtest1.phpに返す値 ?>

  • Javascript 数か所のTextに10キーを

    scriptの超初心者です。以下のように記述して(サンプルを参照して)1か所の入力は可能になりましたが、同じページ上で他の部分はscriptが聞いていないようなのですが、IDなどを変えていくべきですか?つまり二か所目のIDに数字を加えて、scriptでの#部分も数字を付け加える必要がありますか? html <input type="text" width="4" height="3" name="sen17" value="" id="defaultKeypad"> script <script type="text/javascript"> $(function() { $('#defaultKeypad').keypad(); $('#viewKeypad').click(function() { alert('現在の入力値: ' + $('#defaultKeypad').val()); }); $('#removeKeypad').toggle(function() { $(this).text('Re-attach'); $('#defaultKeypad').keypad('destroy'); }, function() { $(this).text('Remove'); $('#defaultKeypad').keypad(); } ); }); metaには <script type="text/javascript" src="jquery.keypad.js"></script> 必要なjsファイルは配置してあります 超基本的な質問で済みませんが、よろしくお願いします。

  • hiddenにjavascript関数の戻り値

    下記のPHPスクリプト内において、hidden属性で、テキストエリアの文章を 自分自身(deleteUpdate.php)に、POSTメソッドで送信しているのですが、 $text_val = $_POST['text_val']をvar_dump()すると、NULLになって、 テキストエリアで更新した文章が入ってきません。 どこが間違っているのか、教えていただきたいです。 <script language="javascript"> <!-- function getText(){ var text = document.getElementByID('contents').value; return text; } //--> </script> ~ <input type="hidden" name="text_val" id="text_val" value="<script>getText()</script>">

  • 2度押し防止のJavascript

    先日、「買い」のボタンを押すと、100購入~800購入までがずらりと出てくるJavascriptをこちらでお教えいただきました。(ONEONE様 有難うございます) その際、「買いのボタン」の2度押し防止スクリプトも同時に組んでいただきました。 それが末尾のスクリプトになります。 質問 買いボタンの2度押し防止は出来ていますが、100購入 200購入 300購入の連続買いができてしまう状況です。 この連続買いの防止のjavascriptをご教示いただければと思います。 当方は、 <script type="text/javascript"> jQuery(function($){ $("#btn0").click(function (e) { e.preventDefault(); $("#kai").show(); $(this).prop("disabled", true); }); $("#b_btn").click(function (e) { $(this).prop("disabled", true); }); }); </script> としてみたのですが、うまく行きませんでした。よろしくお願いいたします。 *************************************************************************** 現状 (買いボタンの2度押し防止は機能しているが     100購入 200購入の連続買いができる状態) *************************************************************************** <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <form action="abc.cgi" method="post" name="form1" id="form1"> <button id="btn0">買い</button> <div id="kai" style="display:none"> <button id="b_btn" type="submit" name="b100" value="100">100購入</button><br> <button id="b_btn" type="submit" name="b200" value="200">200購入</button><br> <button id="b_btn" type="submit" name="b300" value="300">300購入</button><br> <button id="b_btn" type="submit" name="b400" value="400">400購入</button><br> <button id="b_btn" type="submit" name="b500" value="500">500購入</button><br> <button id="b_btn" type="submit" name="b600" value="600">600購入</button><br> <button id="b_btn" type="submit" name="b700" value="700">700購入</button><br> <button id="b_btn" type="submit" name="b800" value="800">800購入</button><br> </div> </form> <BR> <script type="text/javascript"> jQuery(function($){ $("#btn0").click(function (e) { e.preventDefault(); $("#kai").show(); $(this).prop("disabled", true); }); }); </script> ***********************************************************************

  • ボタンを押すとデータ表示、再度押すと非表示

    ボタンを押すとデータが表示されるjqueryを利用したjavascriptがあります。 このボタンを再度クリックすると非表示にしたいと考えています。 奇数回クリック=表示 偶数回クリック=非表示 という形です。 ご教授いただきたくお願いいたします。 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <script type="text/javascript"> jQuery(function($){ $("#btn0").click(function (e) { e.preventDefault(); $("#data").show(); }); </script> <button class="button18" id="btn0">ボタン</button> <div id="data" style="display:none"> データ </div>

  • jqueryのAJAXで通信が完了した時のアラートをLightbox風

    jqueryのAJAXで通信が完了した時のアラートをLightbox風に表示したい。 コード <script type="text/javascript"> //<![CDATA[ $(function(){ $('#exebtn').click(function() { $.ajax({ type: "post", url : "sendmail.php", data : { message: $('#message').val(), exebtn:$('#exebtn').val()}, datatype:'text', //ここの部分をどう変えれば出来るのでしょうか? success: function(data) { if(data != ''){ alert(data); }}, }); }); }); //]]> </script> ご教授、宜しくお願い致します。

    • ベストアンサー
    • AJAX