表单提交后,滚动到表单

时间:2014-08-19 15:12:21

标签: php jquery forms laravel

我很抱歉,如果这是一个副本(我到处搜索可能的解决方案)但我只需要知道如何在Laravel中提交表单后使用jquery代码。

仅供参考:我正在使用Laravel,并且在表单凭据正确时使用Redirect :: back()。

这是我在提交表单时使用的控制器代码:

public function store()
    {
        $user = array(
            'voornaam'          => Input::get('voornaam'),
            'achternaam'        => Input::get('achternaam'),
            'email'             => Input::get('email'),
            'telefoonnummer'    => Input::get('telefoonnummer'),
            'bedrijfsnaam'      => Input::get('bedrijfsnaam'),
            'adres'             => Input::get('adres'),
            'opmerking'         => Input::get('opmerking'), 
            'titel'             => Input::get('paginanaam'),
            'datum'             => Input::get('dedatum'),
            'personen'          => Input::get('personen'),
        );
        $data = $user;

        $rules = array(
            'voornaam'      => 'required',
            'achternaam'    => 'required',
            'email'         => 'required',
            'adres'         => 'required',
            'bedrijfsnaam'  => 'required',
            'datum'         => 'required',
        );

        $messages = array(
            'voornaam.required'     => 'Vul a.u.b. uw voornaam in.',
            'achternaam.required'   => 'Vul a.u.b. uw achternaam in.',
            'email.required'        => 'Vul a.u.b. uw emailadres in.',
            'adres.required'        => 'Vul a.u.b. uw factuuradres in.',
            'bedrijfsnaam.required' => 'Vul a.u.b. uw bedrijfsnaam in.',
            'datum.required'        => 'Selecteer a.u.b. een datum.',
        );

        if(Input::get('spamcheck'))
        {
            return 'Stop spamming please.';
        }

        $validation = Validator::make($data, $rules, $messages);
        if ( $validation->fails() )
        {
            return Redirect::back()->withErrors($validation)->withInput();
        } else {
            if(Input::get('kopie') === 'ja') {
                Mail::send();

            } else {
                Mail::sendothermail();
            }

        return Redirect::back();
    }
}

我从这个控制器中删除了一些不必要的代码(fyi),这样你就不会分心我的问题。当用户提交表单并且有错误时,错误将显示在页面顶部。但是,我想做类似的事情:当用户提交表单并且凭据正常时,它会重新加载页面并应滚动到表单并隐藏表单并显示成功消息而不是表单。

如果这是类似问题的重复,请告诉我。

2 个答案:

答案 0 :(得分:2)

成功验证后,使用会话Flash数据返回您的视图以执行if success load js

<强>控制器

return Redirect::back()->with('success');

查看 - demo

@if(Session::get('success'))

    <script>

         $('html, body').animate({
            scrollTop: $("#form").offset().top
         }, 2000);

         window.setTimeout(function(){
             $('#form').hide().next('#success').show();
         }, 1500);

    </script>

@endif

答案 1 :(得分:0)

将包含表单+错误或succes消息的元素赋予'name'属性,例如'form'。然后,不要使用Redirect:back(),而是重定向到其后面带有#form的页面,例如'index.php #form'。 JavaScript会提供更多选择。