情况:Laravel 4.2 我有一个带有选择框的表单
{{ Form::select('NameCustomary', $ent) }}
预先填好的人名。 在控制器中:
$ent = array('' => 'Choose existing person') + Entity::orderBy('NameCustomary','asc')->lists('NameCustomary', 'id');
我需要什么: 如果一个人(模型名称是实体)不在列表中,我希望
我尝试了好几次,但是我在掌握AJAX和JQuery方面遇到了困难,但未能将这种机制放在一起。
谢谢。
答案 0 :(得分:0)
我提出了这个解决方案。它很粗糙,但可以按照预期工作。
首先,阅读this tutorial后 我设法使用AJAX发布表单 重要的提示: 使用AJAX的表单必须放在要修改的表单的外部!我使用了一个模态 - 这样可以使用原始表单中的按钮触发AJAX表单。
TWO, 在控制器方法中,我向数据库中添加了新实体,并且还包含了这个响应数组:
$response = array(
'status' => 'success',
'msg' => 'Option created successfully',
'new_entity_id' => '<input class="" name="NameCustomary" type="hidden" value="'.$LastInsertId.'" id="NameCustomary">',
'new_entity' => Input::get( 'NameCustomary' )
);
return Response::json( $response );
THIRD, 我添加了一个JS来替换原始表单的内容。请注意上面数组中new_entity_id的值。我最初的问题只是我的误解 - 我是一个菜鸟。我只需要一种填充原始表单的方法。我不需要使用选择框,因为我已经选择了新创建的值。
jQuery(document).ready(function($){
$('#form-quick-entity').on('submit', function(){
// ajax post method to pass form data to the
$.post(
$(this).prop('action'), {
"_token": $( this ).find( 'input[name=_token]' ).val(),
"option_name": $( '#kv_option_name' ).val(),
"option_value": $( '#kv_option_value' ).val(),
"NameCustomary": $( this ).find( 'input[name=NameCustomary]' ).val(),
"itemtype_id": $( this ).find( 'input[name=itemtype_id]' ).val()
},
function(data){
//response after the process.
$('#experiment_update2').text(data.msg);
$('#entity_place').replaceWith(data.new_entity_id);
$('#entity_name').text(data.new_entity);
$('#entity_name').addClass('but- block padding csh_11 margins');
$('#entity_name').removeClass('hidden');
$('#modal_quick_add_entity').modal('hide');
},
'json'
);
return false;
});
});
注意上面JS中的最后一个命令:它是关闭模态的命令。它由将表单发送到控制器方法的相同点击触发。它在更换原始表格并且不再需要模态之后发生 -
DONE。
如果您知道更好的解决方案或有办法改进上述代码,请执行此操作!