【问题标题】:Bootstrap, Modal is always showBootstrap,Modal 总是显示
【发布时间】:2014-10-23 23:27:38
【问题描述】:

我正在关注 DevsBrasil' Laravel tutorial,试图裁剪用户图像。

而且模态总是显示..

这是一个控制器

public function editUsers($userID) {

    $user = Sentry::findUserById($userID);

    $data = array();
    $data['image'] = Session::get('img');
    $data['modal'] = (Session::get('modal') == null ? 'false' : 'true');

    $group_p = $user->getGroups();

    $groups_p = [];
    foreach (Sentry::findAllGroups() as $group) {
        $groups_p [$group->id] = $group->name; 
    }

    return View::make('dashboard.users.edit')
    ->with('user',$user)
    ->with('group_p',$group_p)
    ->with('groups_p',$groups_p)
    ->with('data',$data);

}

public function updateUsers($userID) {

    $user = Sentry::findUserById($userID);


    return View::make('dashboard.users.edit')
    ->with('user',$user);
}

public function UploadImg($userID)
{
    if (Input::hasFile('image')) {

    $user = Sentry::findUserById($userID);

    $image_name = $image->getClientOriginalName();

    $image = Input::file('image');
            $filename  = $user->username . '.' . $image->getClientOriginalExtension();
            $path = public_path('img/users/' . $filename);
            $int_image = Image::make($image->getRealPath());

            $int_image->resize(568,null, function($constraint){
                $constraint->aspectRatio();
            });

            $int_image->save($path);
            $user->image = 'img/users/'.$filename;

            Session::put('modal','ture');
    }else{
    }

        return Redirect::back();

}

public function CropImg()
{
        return Redirect::back();
}

查看:

<!-- Tab content -->
                        <div id="tabImage" class="tab-pane innerAll">
                            <h4 class="innerTB">
                                Update {{ $user->name }} image. 
                            </h4>
                            <div class="row">
                                <div class="col-md-12 ">
<div class="bootbox modal fade in" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: block;">
   <div class="modal-dialog">
      <div class="modal-content">
         <div class="modal-header">
            <h4 class="modal-title">Crop Image</h4>
         </div>
         <div class="modal-body">
            {{Form::open(array('route' => 'crop_user_image_post', 'onsubmit' => 'return checkCoords' ,'class'=>'form-horizontal'))}}
            {{HTML::image($data['image'], '' , ['id' => 'crop'] )}}
            <input type="hidden" id="src" name="src" value="{{ $data['image'] }}" >
            <input type="hidden" id="x" name="x" />
            <input type="hidden" id="y" name="y" />
            <input type="hidden" id="w" name="w" />
            <input type="hidden" id="h" name="h" />
         </div>
         <div class="modal-footer">
            <button data-bb-handler="Done" type="button" class="btn btn-success">Success!</button>
         </div>
         {{ Form::close() }}
      </div>
   </div>
</div>
{{Form::open(array('route' => 'update_user_image_post', 'method' => 'post','files'=>'true','class'=>'form-horizontal') , $user->id)}}
{{ HTML::image($user->img, $user->username, array('class' => 'img-circle' )) }}
{{Form::file('image')}}
<div class="form-group">
   <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-primary">Upload Image <i class="fa fa-check"></i></button>
   </div>
</div>
{{ Form::close() }}
<input type="hidden" id="modal" value="{{$data['modal']}}" />
                                </div>
                            </div>
                        </div>
                        <!-- // Tab content END -->

JS代码:

我给输入隐藏的 id (#modal) 值来自控制器 $data['modal'] = (Session::get('modal') == null ? 'false' : 'true');

<script>
   var modal;
   if ($('#modal').val() == 'true' ) {
      modal = true;
   }else{
      modal = false;
   }

   $(document).ready(function(){
      $('#crop').Jcrop({
         aspectRatio: 1,
         onSelect: atualizaCoordenadas
      });
      $('#myModal').modal({show: modal});
   });

   function atualizaCoordenadas(c){
      $('#x').val(c.x);
      $('#y').val(c.y);
      $('#w').val(c.w);
      $('#h').val(c.h);
   }

   function checkCoords(){
      if (parseInt($('#w').val())) return true;
      alert('Error');
      return false;
   }

</script>

【问题讨论】:

  • 您应该做的第一件事是检查“modal”的值是多少。执行console.log(modal) 来检查控制台是真还是假。
  • @Gohn67 你能用代码解释一下你的意思吗,我不是我必须做的,,
  • 这里有一个关于如何使用 Chrome 的开发者控制台的教程:developer.chrome.com/devtools/docs/console。在您的 javascript 文件中,在 IF statement 之后键入 console.log(modal)
  • @Gohn67 如果你的意思是' if ($('#modal').val() == 'true') { modal = true; }else{ 模态 = false; } console.log(modal)' 还是模态显示
  • 是的。检查控制台以查看“modal”的值。或者做alert(modal) 基本上如果你得到true,那么模态将显示。

标签: jquery twitter-bootstrap laravel modal-dialog jcrop


【解决方案1】:

这就是模态不断显示的原因。

您在模态 div 中设置了 style="display:block"。内联样式优先于其他 CSS 样式。我没有查看 Bootstrap 源代码,但有可能使用 css 类而不是内联样式设置模态可见性。

看这里(滚动到最右端):

<div class="bootbox modal fade in" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: block;">

您需要从 div 中删除 style="display:block",如下所示:

<div class="bootbox modal fade in" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">

这里有一个更易读的 div 属性版本供您比较:

版本不正确

<div 
  class="bootbox modal fade in" 
  id="myModal" 
  tabindex="-1" 
  role="dialog" 
  aria-labelledby="myModalLabel" 
  aria-hidden="true" 
  style="display: block;"> <!--The issue is this `style` attribute-->

正确版本

<div 
  class="bootbox modal fade in" 
  id="myModal" 
  tabindex="-1" 
  role="dialog" 
  aria-labelledby="myModalLabel" 
  aria-hidden="true">

【讨论】:

  • 好的,它现在被隐藏了,但如果它是“真实的”,它仍然是隐藏的。我使用警报(模态)检查了“模态”,这是真的
  • 您是否在此处添加了这一行:$('#myModal').modal({show: modal});?
  • 你能在这行$('#myModal').modal({show: modal})之后移动警报吗?或者,将其更改为 $('#myModal').modal({show: true}) 以确保其正常工作。
  • 我已经提前尝试过了。仍然隐藏:/我累了。
  • 是的,这很奇怪。您是否包含bootstrap.js 文件?如果是这样,您可能会遇到阻止代码执行的错误。您可以查看 Chrome/Firefox/IE 开发者控制台查看
猜你喜欢
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2021-06-06
相关资源
最近更新 更多