Laravel 聚焦于元素

问题描述 投票:0回答:1

我正在通过 Laravel 发送邮件,发送邮件后,网页会重新加载。所以,我想在重新加载后将焦点集中在 FORM 元素上。有没有可能的方法让 javascript 在特定时刻执行?

Main.blade.php

    @if(Session::has('flash_message'))
      <script>
        $(document).ready(function(){
          alert('abcd');
          $('[name=sentMessage]').focus();
        });
      </script>
      <div class="alert alert-success">{{ Session::get('flash_message')}}</div>
    @endif
    <form name="sentMessage" method="post" action="{{ route('demo.store') }}">
      {{ csrf_field() }}

控制器.php

public function store(Request $request){
  $this->validate($request, [
      'name' => 'required',
      'email' => 'required|email',
      'phone' => 'required',
      'message' => 'required'
  ]);

  Mail::send('emails.contact-message',[
      'name' => $request->name,
      'email' => $request->email,
      'phone' => $request->phone,
      'msg' => $request->message
  ], function($mail) use ($request){
      $mail->from($request->email, $request->name);
      $mail->to('@gmail.com')->subject('A Message From HCL Portfolio Website');
  });

  return redirect()->back()->with('flash_message', 'Thank you for your interest');
}
javascript php laravel
1个回答
0
投票

getElementByName()
不存在,只有
getElementsByName()

既然你使用的是 jQuery,你可以这样做:

$('[name=sentMessage]').focus();

或者使用

autofocus
属性:

<... name="sentMessage" @if(Session::has('flash_message'))autofocus@endif ...>
© www.soinside.com 2019 - 2024. All rights reserved.