PHP
laravel-admin表单实现根据select选项展示input控件
laravel-admin表单实现根据select选项展示input控件
博主最近在实现一个功能的时候,需要表单根据选项来展示不同的input控件,网上查看了相关东西,也是没有找到,最后在一个帖子看到了灵感,下面就跟大家分享如何实现。
在表单中,博主需要根据select类型来展示不同的input控件,一共有4个input控件,我们需要先提前隐藏input控件,字段分别为test1、test2、test3、test4,代码如下:
$form->hidden('test1','测试'); $form->hidden('test2','测试2'); $form->hidden('test3','测试3'); $form->hidden('test4','测试4');
然后放置我们的select控件,代码如下:
$form->select('project_id', '类型')->options( [1=>'测试1',2=>'测试2','3'=>'测试3',4=>'测试4']);
然后便是我们的HTML代码,来代表这4个控件,默认都是隐藏状态,代码如下:
$form->html(" <div class='form-group' id='test1Div' style='display:none;'> <label for='test1' class='col-sm-2 control-label'>测试1</label> <div class='col-sm-8'> <div class='input-group'> <div class='input-group'> <input type='number' style='border-radius:5px' id='test1' name='test1' value='0' class='form-control test1' placeholder='输入数据'> </div> </div> </div> </div> <div class='form-group' id='test2Div' style='display:none'> <label for='test2' class='col-sm-2 control-label'>测试2</label> <div class='col-sm-8'> <div class='input-group'> <div class='input-group'> <input type='number' style='border-radius:5px' id='test2' name='test2' value='0' class='form-control test2' placeholder='输入数据'> </div> </div> </div> </div> <div class='form-group' id='test3Div' style='display:none'> <label for='test3' class='col-sm-2 control-label'>测试3</label> <div class='col-sm-8'> <div class='input-group'> <div class='input-group'> <input style='border-radius:5px' type='number' id='test3' name='test3' value='0' class='form-control test3' placeholder='输入数据'> </div> </div> </div> </div> <div class='form-group' id='test4Div' style='display:none''> <label for='test4' class='col-sm-2 control-label'>测试四</label> <div class='col-sm-8'> <div class='input-group'> <input type='text' style='border-radius:5px' id='test4' name='test4' value='0' class='form-control test4' placeholder='输入数据'> </div> </div> </div> ");
然后便是一段JS代码来控制根据选项展示不同input的效果,代码如下:
Admin::script(" $('select[name=project_id]').change(function(){ //重新隐藏DIV document.getElementById('test1Div').style.display = 'none'; document.getElementById('test2Div').style.display = 'none'; document.getElementById('test3Div').style.display = 'none'; document.getElementById('test4Div').style.display = 'none'; //重置input的值 $('input[name=test1]').val('0') $('input[name=test2]').val('0') $('input[name=test3]').val('0') $('input[name=test4]').val('0') //获取选中数值 var opt=$('select[name=project_id]').val(); //根据条件判断 if(opt===1){ document.getElementById('test1Div').style.display = 'block'; }else if(opt===2){ document.getElementById('test2Div').style.display = 'block'; }else if(opt===3){ document.getElementById('test3Div').style.display = 'block'; }else if(opt===4){ document.getElementById('test4Div').style.display = 'block'; }else{ } }); ");
这样我们便成功实现了根据select展示不同的input。
0条评论