datalist型テキストボックスをSELECTボックスに近い感覚で扱えるようにするクラス | 中途版 | DatalistSelectEx.js

GitHub DatalistSelectEx.js
Demo

HTML


	<script src="js/DatalistSelectEx.js"></script>
	~略~
	<form action="#">
		<div class="col-6">
			<div class="input-group">
				<input type="text" id="animal_id" name="animal_id"  value="99"/>
				<input list="animal_dlist" id="animal_name" name="animal_name" value="" class="form-control"> 
				<div class="input-group-append">
					<button id="animal_id_clear" class="btn btn-outline-secondary" type="button">×</button>
				</div>
				<span id="animal_id_err" class="text-danger"></span>
				<datalist id="animal_dlist" ></datalist>
			</div>
		</div>
		<button id="submit_btn" class="btn btn-warning btn-lg" onclick="return onSubmit1()">Submit</button>
		<div class="text-danger" id="valid_err_msg"></div>
	</form>
	

JavaScript


	let datalistSelectEx1;
	
	$(()=>{
		
		let testList = _getTestList();
		
		datalistSelectEx1 = new DatalistSelectEx(testList, {
			'inp_id_xid':'animal_id',
			'inp_name_xid':'animal_name',
			'clear_xid':'animal_id_clear',
			'err_xid':'animal_id_err',
			'datalist_xid':'animal_dlist',
		});
		
	});
	
	
	// Submitボタン押下アクション
	function onSubmit1(){
		
		$('#valid_err_msg').html('');
		let err_msg = datalistSelectEx1.checkError();
		
		if(err_msg){
			$('#valid_err_msg').html(err_msg);
			return false;
		}
	
		return true;
		
	}
	
	function _getTestList(){
		let testList = {
			1:'アベサンショウウオ',
			2:'アカイシサンショウウオ',
			1000:'赤猫',
			1001:'赤猫',
			1002:'赤猫',
			3:'ハクバサンショウウオ',
			4:'ホクリクサンショウウオ',
			5:'オオイタサンショウウオ',
			602:'ニライカナイボウズハゼ',
			603:'トラフボウズハゼ',
			604:'タイワンキンギョ',
		};
		return testList;
	}

	

CSelectLinkage.js | カテゴリ連動型SELECT | 2つのSELECTボックスの連動

GitHub Demo

HTML


~略~
	<script src="js/jquery3.js"></script>   <!-- jquery-3.3.1.min.js -->
	<script src="js/CSelectLinkage.js"></script>
	<script src="js/script.js"></script>
~略~

<form action="#" method="post">
	<select id="animal_id" name="animal_id"  data-value="<?php echo $_POST['animal_id'] ?? 0 ?>"></select>
	
	<select id="category_id" name="category_id">
		<option value="">-- すべて --</option>
		<option value="1">哺乳類</option>
		<option value="2">爬虫類</option>
		<option value="3">両生類</option>
		<option value="4">魚類</option>
		<option value="5">鳥類</option>
	</select>
	<button class="btn btn-success">Submit</button>
</form>
	

JavaScript script.js



$(()=>{
	
		var data = [
					{'animal_id':1,'category_a':2,'animal_name':'トカゲ'},
					{'animal_id':2,'category_a':1,'animal_name':'ネコ'},
					{'animal_id':3,'category_a':1,'animal_name':'ウシ'},
					{'animal_id':4,'category_a':2,'animal_name':'ヘビ'},
					{'animal_id':5,'category_a':2,'animal_name':'カナヘビ'},
					{'animal_id':6,'category_a':4,'animal_name':'タナゴ'},
					];
		
		
		var cSelectLinkage = new CSelectLinkage({
			'main_select_slt':'#animal_id', // 主SELECTのセレクタ | リストはカテゴリSELECTの値に連動して変化します。
			'category_select_slt':'#category_id', // カテゴリSELECTのセレクタ 
			'main_field':'animal_id',
			'category_field':'category_a',
			'display_name_field':'animal_name',
			'data':data, // 主SELECTのリストで使われるデータです。 main_field, category_field, display_name_fieldで指定されたプロパティで構成されるエンティティの配列です。
			'empty':' --- ', // 主SELECTの未選択時の表記名	nullをセットすると未選択項目は表示されません。
			'all_category_flg':true, //	 全カテゴリフラグ	trueにすると、カテゴリSELECTで空を選択した際、主SELECTを全カテゴリの選択肢を表示します。
		});
	
});



	

showModalBigImg モーダル大画像表示モジュール

Demo