【问题标题】:Fill form fields based on radio button selection根据单选按钮选择填写表单字段
【发布时间】:2018-08-04 07:48:50
【问题描述】:

一个帖子可以有多个管理员,通常是 4 或 5 个管理员。我有一个表单来编辑帖子的管理员。

这个表单有一些单选按钮。每个单选按钮对应于帖子的管理员。

为此,我有这个代码:

@foreach($administrators $admin)
      <div class="form-check">
        <input class="form-check-input" type="radio" name="radiobutton" id="{{$admin->id}}" value="">
        <label class="form-check-label" for="">
          {{$admin->first_name}}
        </label>
      </div>
  @endforeach

在单选按钮下方,表单有一些字段,我想在这些字段中显示每个选定管理员的信息。

这部分我在怀疑如何去做。也许最好的选择是使用 AJAX/fetch 来处理这个问题,每次选择单选按钮时都会执行一个 ajax 请求。

我已经有了上面的代码,其中每个单选按钮 id 都是数据库中管理员的 id。

但是现在你知道当在 laravel 控制器和 jQuery 中选择相应的单选按钮时,如何做那个 jquery ajax 部分来用管理员的相应值填充表单字段吗?我没有找到任何关于如何做到这一点的例子。

管理员控制器:

class AdministratorController extends Controller
{
    public function edit($id)
    {
        $post = Post::find($id);
        $administrators = Administrator::where('post_id', $id)->get();

        return view('administrators.edit')
            ->with('post', $post)
            ->with('administrators', $administrators));
    }

管理员模型:

class Administrator extends Model
{
    protected $fillable = [
        'first_name', 'email', 'password', 'description', 'post_id'
    ];

    public function post(){
        return $this->belongsTo('App\Post');
    }
}

【问题讨论】:

  • 既然管理员已经全部获取,为什么还要一个接一个地重新获取?
  • 感谢您的回答。但是你知道正确地实现我想要使用 jQuery 的结果吗?或者它也不需要jQuery?我可以将 json 中的所有管理员从控制器传递到视图,但是如何使用 jQuery 根据单选按钮选择填充表单字段?
  • 你能给我们一些你想要的示例代码吗?我不确定你到底想做什么
  • 例如,我希望出现在此帖子管理员编辑页面中的每个单选按钮都显示管理员的姓名。例如,如果 ID 为“1”的帖子有 4 个管理员,那么它应该出现在编辑管理员页面 4 单选按钮上。每个单选按钮都有一个帖子管理员的姓名。这是使用“@foreach($administrators as $admin)...endforeach”的一部分。
  • 但是,当每个单选按钮(管理员)被选中时,我想在表单字段(姓名、电子邮件等)中显示每个选定管理员的信息,以便可以更新管理员详细信息。

标签: jquery laravel


【解决方案1】:

由于您已经拥有所有管理员的列表,因此您可以将它们保存在 javascript 变量中,并在以后根据需要重复使用它们:

var admins = {{ $administrators }};

【讨论】:

  • 谢谢,我已经使用了它,并且我得到了源中的值 "var admins= [{"id":1,"name":"John","email":"emailtest@test .coml","..."}]"。但是如何使用 jQuery 在表单字段中显示每个管理员的信息呢?我正在尝试使用 jQuery.each,我不知道它是否是一个好的解决方案但没有成功。
  • 你得到所有被选中的ids,然后循环遍历var admins,将每个admin id与ids匹配并得到匹配,一旦你得到匹配,然后foreach匹配,你创建DOM element 并填充它
  • 谢谢我现在有这个:var admins = {!! $administrators !!} var id = $(".radio:checked").attr('id'); for (var i = 0; i
  • admins[i] 是一个管理员,所以admins[i].id 是一个管理员 id
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多