レコード詳細画面に設置している検索窓について

お世話になっております。

レコード内に約20個のテーブルがあり、いくつかのサイトや投稿を参考にレコード詳細画面に検索窓を設置したのですが編集画面を開いた後に保存すると検索窓が増えてしまいます。

増やさないようにしたいのですがご教示して頂けないでしょうか。

また、検索結果を優先的に上に表示させることは可能でしょうか?併せてご教示して頂けると幸いです。

 

(使用したコード)

JQueryです。

(function() {
 "use strict";
 kintone.events.on('app.record.detail.show', function() {
 var searchBox = `<input id="searchBox" type="text">`;
 $("#record-gaia").prepend(searchBox);
 $("#record-gaia").on("keyup","#searchBox",function(){
 var keyword = $(this).val();
 $.each($("tbody tr"), function(i, val){
 //サブテーブルの検索したいカラムが何列目かによってeq()の数字を変更。(0始まり)
 if($(val).find("td:eq(1)").text().indexOf(keyword)!=-1){
 $(val).show();
 }else{
 $(val).hide();
 }
 });
 });
return event;
 });
})();

 

nekokoさん

こんにちは。

 

検索ボックスにidを振られていますので、そのidを持つ要素が既にあれば処理しないという形で増殖を防げます。

if (document.getElementById("searchBox")) {
return;
}

// jQueryを使うなら
if ($("#searchBox").length) {
return;
}

 

あるいは、検索ボックスを毎回削除して、再度作り直すという方法もあります。

koichi様

コードのご教示ありがとうございます。

IFを用いて対処することが出来るのですね。勉強になりました。

 

コードの挿入位置は7行目と8行目の間でよろしいのでしょうか。

引き続きご教授して頂けますと幸いです。

 

 

 

var searchBox = `<input id="searchBox" type="text">`;

の前が良いです。

if判定して、要素があればreturnで終了。

無ければ、searchBoxを作成という流れになります。

koichi様

コードの挿入箇所並びに解説有難うございます。

無事に検索ボックスの増殖を防ぐことができ、思っていた通りの動作をするようになりました。