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条评论

发表评论