您好我正在使用dynamic drop down
用于州和城市,当我在插入状态ID进入数据库后从下拉列表中选择州和城市时我想要插入州名而不是ID。如果我从(option value=id)
动态下拉中删除ID无法正常工作...请建议我
这是我的刀片模板:
<form method="POST" action="{{URL::to('test/insert')}}">
<input type="hidden" name="_token" value="{{csrf_token()}}"/>
<select name="state" id="state" class="form-control input-sm">
@foreach($states $state)
<option value="{{$state->id}}">{{$state->name}}</option>
@endforeach
</select>
<select id="city" class="form-control input-sm" name="city">
<option value=""></option>
</select>
<input type="submit" name="submit">
</form>
<script>
$('#state').on('change',function(e){
console.log(e);
var state_id = e.target.value;
$.get('city?state_id=' + state_id, function(data){
$('#city').empty();
$.each(data,function(index,subcatObj){
$('#city').append('<option value="'+subcatObj.name+'">'+subcatObj.name+'</option>');
});
});
});
</script>
这是我的控制器:
public function state()
{
$states=DB::table('states')->get();
return View::make('index')->with('states',$states);
}
public function city()
{
$state_id=Input::get('state_id');
$cities=DB::table('towns')->where('state_id','=', $state_id )->get();
return Response::json($cities);
}
这是我的插入状态和城市控制器:
public function insert() {
$s_name=array('state' => Input::get('state'),
'city' => Input::get('city'));
DB::table('test')->insert( $s_name);
}
答案 0 :(得分:0)
首先,您可以将select
更新为类似内容(例如,添加data-id属性):
@foreach($states $state)
<option value="{{$state->name}}" data-id="{{$state->id}}">{{$state->name}}</option>
@endforeach
然后,将您的JavaScript函数更新为(即选择新的data-id
属性以从ajax获取城市):
$('#state').on('change',function(e){
console.log(e);
var state_id = $(this).attr('data-id');
$.get('city?state_id=' + state_id, function(data){
$('#city').empty();
$.each(data,function(index,subcatObj){
$('#city').append('<option value="'+subcatObj.name+'">'+subcatObj.name+'</option>');
});
});
});
然后,提交表单应该为您提供州名而不是ID。