ページを開くと、DBから取得したレコードを一覧表示します。
フレームワークはcodeigniterを使用しています。
そのときにページ上部に複数の検索項目があります。
普段はajaxで一覧部分だけ5秒ごとに更新し、最新のレコードを取得し表示しています。
html
1<form> 2 <label for="text1">No</label><input type="text" name="text1"><br> 3 <label for="text2">日付</label><input type="text" name="text2"><br> 4 <label for="text3">日付</label><input type="text" name="text3"><br> 5 <label for="text4">種類</label><input type="text" name="text4"><br> 6 <label for="text5">コード</label><input type="text" name="text5"><br> 7 <button>検索</button> 8</form> 9<div id="list"> 10<table> 11 <tr> 12 <th>No</th> 13 <th>日付</th> 14 <th>名前</th> 15 <th>種類</th> 16 <th>コード</th> 17 </tr> 18 <?php foreach($list as $key1 => $val1): ?> 19 // ここでCodeigniterで取得したレコードを表示 20 <?php endforeach; ?> 21</div>
5秒ごとにajaxで最新のレコード用のcodeigniterのメソッドにアクセスし、<div id="list">の中だけ更新しています。
javascript
1$(function(){ 2 setInterval(function(){ 3 $('#list').load('/list/saishin_hyouji'); 4 },5000); 5});
html
1// 表示用html 2<div id="list"> 3<table> 4 <tr> 5 <th>No</th> 6 <th>日付</th> 7 <th>名前</th> 8 <th>種類</th> 9 <th>コード</th> 10 </tr> 11 <?php foreach($list as $key1 => $val1): ?> 12 // ここでCodeigniterで取得したレコードを表示 13 <?php endforeach; ?> 14</div>
これで、5秒ごとに更新はできているんですが、この更新をinputのどれか一つでも値が入っていたら、ajaxを止めたいです。
javascript
1 2 var timer; 3 var start = function() { 4 timer = setInterval(function(){ 5 var path = location.pathname.slice(25); 6 $('#list').load('/admin/visitors/situation_view' + path); 7 },5000); 8 } 9 10 $('input').bind('keydown keyup keypress change',function(){ 11 if($(':input').val() == "") { 12 console.log("start"); 13 start(); 14 } else { 15 console.log("stop"); 16 stop(); 17 } 18 }); 19 20 if($('input').val() == "") { 21 console.log("start"); 22 start(); 23 }
このようなことを試したりしましたが、5秒ごとの更新が複数回、行われてしまいうまくとまりません。
他には
javascript
1 var timer; 2 var start = function() { 3 timer = setInterval(function(){ 4 var path = location.pathname.slice(25); 5 $('#list').load('/admin/visitors/situation_view' + path); 6 },5000); 7 } 8 9 $('input').bind('keydown keyup keypress change',function(){ 10 console.log("stop"); 11 stop(); 12 }); 13 14 if($('input').val() == "") { 15 console.log("start"); 16 start(); 17 }
このようなこともしましたが、これではinputが空になったときにページを更新しないとajaxで更新が始まりませんでした。
詳しい方いらっしゃいましたら、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/11/14 02:03 編集
退会済みユーザー
2016/11/14 02:05