【问题标题】:How to get the text box instead of dropdown select box if get null value from json如果从json获取空值,如何获取文本框而不是下拉选择框
【发布时间】:2016-07-28 00:57:57
【问题描述】:

我从控制器获取 json 数据并显示在下拉选择框中。但是当我在 json 中获得空值时,我想显示文本框而不是下拉列表。手动填充数据。

    public function getyear(Request $request){
    $appraisals=new Appraisals();
    $serial=$_GET['ser'];
    $brand=$_GET['brand'];

    $year_array='';

    $serial_number=$appraisals->get_years($brand,$serial);


    if(isset($serial_number)):
    foreach($serial_number as $years):

    $yrs=$years->year_start;
    $yre=$years->year_end;
    endforeach;
    endif;
    if(!empty($serial_number)){
        if($yrs!="" && $yre!=""){

            for($i=$yrs;$i<=$yre;$i++):

            $year_array.="<option value='".$i."'>".$i."</option>";
            endfor;
        }
    }
    else
    {
        //for($i=1840;$i<1940;$i++):
        $year_array.="<input type='text' value=''>";
        //endfor;

    }


    return response()->json(['success' => true,'years_array'=>$year_array]);
    exit;
}

java脚本函数:

   $('#serial').blur(function() {
         var ser=$(this).val();
         var brand=$('#brand').val();

         brand = brand.split('%') ;

         $.getJSON("{!! URL::route('appraisal.getyear') !!}", {brand: brand[0],ser:ser}, function(data) {


             if(data.success)
                {

                $('#year').html(data.years_array);

                }

            });

        });

查看文件:

  <div class="form-group">
                    <label>Serial number</label>
                    {{Form::text('serial_number', null, ['placeholder' => 'Enter serial no','class'=>'form-control','id'=>'serial'])}}
                </div>


                  <div class="form-group" id="yeartext">
                    <label>Select Year</label>
                    <span class="years"></span>
                    @if($years=="")
                    {{Form::text('year', null, ['placeholder' => 'Enter Year no','class'=>'form-control','id'=>'year'])}}   
                    @else
                    {{Form::select('year',$years,  null, ['placeholder' => 'Pick a year','class'=>'form-control','id'=>'year'])}}
                    @endif
                </div>

如何显示文本框而不是选择框我没有得到任何教程,所以任何帮助都会得到很大的应用。

【问题讨论】:

  • 试试 if(strlen($year)) true show select false show textbox

标签: php jquery laravel


【解决方案1】:

我对你的问题有一个解决方案

首先重新创建整体 GetJson 请求中控制器中的元素 还有一件事你需要在 $.getJSON 上使用 $.get 方法

$year_array='';
$year_array.="<label>Select Year</label>";
$year_array.="<span class='years'></span>";
if(!empty($serial_number)){
    if($yrs!="" && $yre!=""){
        $year_array.="<select name='year'>";
        for($i=$yrs;$i<=$yre;$i++):
        $year_array.="<option value='".$i."'>".$i."</option>";
        endfor;
        $year_array.="</select>";
    }
}
else
{
    $year_array.="<input type='text' value=''>";
}

比在“yeartext”div 上添加 html

$("#yeartext").html(data.years_array);

【讨论】:

    【解决方案2】:

    我对你的代码做了一个非常简化的版本,只是为了让你理解这个概念:

    控制器:

    public function getyear(Request $request){
    
        $years_array = [];
        if(isset($request->brand)){
            for($i = 1900; $i<2001; $i++ ){
                $years_array[] = $i;
            }
        }
    
        $response['success'] = true;
        $response['empty'] = empty($years_array);
    
        if(!empty($years_array)) $response['years_array'] = $years_array;
    
    
        return response()->json($response);
    }
    

    Javascript:

    $.getJSON("{!! URL::route('appraisal.getyear') !!}", {brand: brand[0],ser:ser}, function(data) {
        if(data.success === false) return;
    
        $year_container = $('#yeartext');
        if(data.empty === false){
            $select = $('<select></select>')
    
            for(i=0; i<data.years_array.length; i++){
                $select.append('<option value="'+ data.years_array[i] +'">'+ data.years_array[i] +'</option>')
            }
    
            $year_container.append($select);
        }
    
        else{
            $year_container.append('<input type="text" name="year"');
    
        }
    
    });
    

    【讨论】:

      猜你喜欢
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      相关资源
      最近更新 更多